函数名的应用 闭包 迭代器
一. 函数名的应用
1.可以互相赋值
2.函数名就是变量
def func(): print("我是一个小小的函数") a = func print(a) func() a() func = 3 print(func)
3.可以作为容器的元素
def func1():
print("我是1")
def func2():
print("我是2")
def func3():
print("我是3")
lst = [func1, func2, func3]
for el in lst:
el()
4.可以作为返回值进行返回
def func():
print("我是func")
a = 10
def inner():
print("我是inner")
return inner
ret = func()
print(ret)
ret()
5.可以作为参数传递给函数
def my():
print("我是my")
def proxy(fn):
print("在处理之前")
fn()
print("在处理之后")proxy(my)
二.闭包(可以保护变量,还可以让变量常驻内存)
在内部函数使用外部函数的变量. def outer(): a = 10 # 很耗时 def inner(): print(a) return inner outer()()这种很费时,每次都要加载内存 ret = outer() ret()这种为常驻内存,不需要每次加载
三. 迭代器
_iter_() 可迭代对象,获取迭代器
_next_()+_iter_ 运行迭代器
特点:1.惰性机制 2.只能向下 3.节省内存
for 循环的内部就是迭代器
lst = [1,2,4]
it = lst._iter_() 获取迭代器
while 1:
try:
it._next_()
except StopIteration:
break
Iterable: 可迭代的
Iterator: 迭代器