- 函数名的应用
函数名的命名规范和变量
函数名其实就是一个变量
函数名的作用:
1.可以做为列表元素进行储存
def func1():
pass
def fun2():
pass
lst = [func1,func2] #将函数名传给lst
for el in lst:
el() #将lst循环打印并执行函数
2.可以作为参数传递给函数
def func():
pass
def proxy(fn):
fn()
proxy(func) #将函数名那个传给proxy函数
3.可以作为函数的返回值
def func():
def inner():
pass
return inner
func()() #返回的是变量名,直接执行
- 闭包
闭包:在内层函数中访问外层函数的局部变量
闭包的好处:
1.保护函数变量不受外界影响
2.可以让变量常驻内存
闭包写法:
def func():
a = 10
def inner():
print(a)
return inner
func()()
假如你的函数外部有一个a = 20,用闭包的写法就不会影响你函数内部的a,这样就可以保护你函数内部的变量
- 迭代器
迭代器是用来遍历可迭代对象的
可迭代对象:iterable,里面iter()方法来获取迭代器,没有next()方法
迭代器:iterator,里面有iter()方法,可以获取迭代器,有next()方法
迭代器特点:
1.只能向前
2.惰性机制
3.省内存(生成器)
for循环的机制:
1.首先获取到迭代器
2.使用while循环来获取数据
3.it.__next__()来获取数据
4.异常处理
代码:
lst = ["哈哈","嘻嘻","呵呵"] #建立列表
it = lst.__iter__() #获取迭代器
while True:
try:
a = it.__next__() #获取数据
print(a)
except Stopiteration: #异常处理
break