今天主要学习了python的各种函数参数传递,函数回调与闭包,yield关键字的用法等,笔记与代码放在了一起,如下:
print("------函数------")
'''
参数结构:
1.传统参数传递
无参数传递
固定参数传递
2.默认参数传递
3.未知个数参数传递
4.带键参数传递
'''
def fun():
print("无参数传递")
def fun2(x):
# 固定参数传递
print(x)
def fun3(x, y=100, z='hello'):
# 默认参数传递
print(x, y, z)
def fun4(name, *args):
# 未知参数个数传递
print(name)
for arg in args:
print(arg)
fun4('hello', '1', '2')
def fun5(**kwargs):
# 带键参数传递
print(type(kwargs))
for x in kwargs:
print(x, kwargs[x])
fun5(x=1, y=2, z=3)
'''
回调函数又叫函数回调:
将函数作为参数传递到另外的函数中执行。
'''
def fun6(func, args):
# 函数回调
func(args)
def f1(x):
print(x)
fun6(f1, '这是函数回调')
'''
闭包:
函数回调是将函数作为参数传递,闭包是将函数作为返回值返回
'''
def say(word):
# 闭包
def name(name):
print(word, name)
return name
hi = say('你好')
hi('小明')
print("---------yield----------")
'''
yield 关键字的作用就是把一个函数变成一个generator(生成器)
带有yield的函数不再是一个普通函数,python解析器会将其视为一个generator
若将下面的yield i 改为print(i)将得不到迭代(Iterable)的效果
'''
def fun7(n):
i = 0
while i < n:
yield i
i += 1
for i in fun7(10):
print(i)