1、函数名的应用:
函数的命明规范和变量是一样的
函数名即变量名
应用如下:
1 可以作为列表中的元素进行存储 2 def func1(): 3 pass 4 def func2(): 5 pass 6 lst = [func1,func2] 7 for el in lst: 8 el() 9 可以作为参数传递给函数10 def func():11 pass12 def proxy(fn):13 fn()14 proxy(func)15 可以作为函数的返回值16 def func():17 def inner():18 pass19 return inner20 func()()
2、闭包
闭包:在内层函数中访问外层函数的局部变量
作用:
1、可以保护变量不受外界影响
2、可以让变量常驻内存,不会被释放。
写法:
1 def outer(): 2 a = 10 3 def inner(): 4 print(a) 5 return inner 6 正确使用姿势: 7 def outer(): 8 a = 10 # 假设是一个很耗时的东西 9 def inner():10 print(a)11 return inner12 outer()()13 outer()() ---错误使用姿势14 --------------15 ret = outer()16 ret()17 ret() -----正确使用姿势
3、迭代器
for循环的本质就是迭代器。
可以用来遍历列表,字符串,元祖...可迭代对象
可迭代对象:Iterale,里面有__iter__(),没有__next__()
迭代器:Iterator,里面有__iter__(),还有__next__()
迭代器特点:
1、只能向前
2、惰性机制
3、省内存
for循环的内部机制(即迭代器执行机制)
1 1、首先获取到迭代器 2 2、使用while循环获取数据 3 3、it.__next__()来获取数据 4 4、处理异常try:xxx except StopIteration: 5 6 it = xx.__iter__() 7 while 1: 8 try: 9 data = it.__next__()10 xxxxxx11 except StopIteration:12 break