一、浅拷贝
lists = [1,2,[6]]
内存空间不同,浅拷贝内容不变
new_lists=copy(lists)
lists.append(7)
print(lists,new_lists) //[1,2,[6],7] [1,2,[6]]
改变列表中内容,内存空间相同,数值改变
new_lists=copy(lists)
lists[-1].append(7)
print(lists,new_lists) //[1,2,[6,7]]
二、函数
1.返回值
可以返回多个值,元组类型
def hello():
return 123,456,789
print(hello()) //(123,456,789)
交换变量值
a=22
b=33
a,b = b,a
print(a,b) //33,22
返回值-----yield 生成器遍历打印
def get_data(num):
x = 0
y = 1
for i in range(num):
x,y = y,x+y
yield x //生成器
for i in get_data(10):
print(i)
2.不定长函数
*args返回元组类型,args可以换成其他
def hello(*args):
print(min(args))
hello(5,2,1,6,3) //(5,2,1,6,3)
**kwargs返回字典类型,kwargs可以换成其他
def hello(**kwargs):
print(kwargs)
hello(nihao ='谢谢',byeby = '再见') //{'nihao': '谢谢', 'byeby': '再见'}
3.参数
有确定数值写在变量后面
defhello(name,age=15):
4.递归函数
自己调用自己
def get_data(n):
if n==1:
return 1
return n+get_data(n-1)
print(get_data(100)) //斐波那契数列 5050
5.装饰器
装饰器是一个接受函数对象作为参数并返回一个新函数的函数。
import time
def my_decorator(func):
def wrapper(*args,**kwargs):
begin_time = time.time()
data=func() //func()调用say_hello(),把函数作为参数
stop_time = time.time()
print(stop_time-begin_time)
return data
return wrapper
@my_decorator
def say_hello(): //Hello!
time.sleep(3) 3.06215522
print("Hello!") ok
print(say_hello()) //打印say_hello返回值
@my_decorator装饰器装饰say_hello(),实际上是将say_hello()函数作为参数传递给my_decorator,然后返回wrapper函数。
调用say_hello(),实际上是在调用wrapper函数,先记录开始时间,再调用原始的say_hello()函数,记录结束时间,计算并打印执行时间,最后返回say_hello()的返回值。
6.迭代
可迭代对象-->迭代器-->生成器 能被for循环遍历的元素
迭代器:能被next函数调用,并不断返回下一个值
迭代器包含1.生成器 2.被强制转成迭代器
lista = [1,2.3,4]
new_lists = iter(lists) //强制转迭代器
print(next(new_lists))
print(next(new_lists))
print(next(new_lists))
生成器
data1 = (x for x in range(100))
标签:06,05,生成器,lists,say,time,print,new,hello
From: https://blog.csdn.net/m0_45266493/article/details/139480678