python-闭包-装饰器-迭代器-生成器-匿名函数

函数名 (本质:函数名指向内存地址,第一类对象)
可做参数,可做返回值、可做容器类型的元素、可赋值
eg:
def func():pass
a = func # a指向func的内存地址
list l = func # l[0]指向func的内存地址、字典同理
闭包函数
在函数内部引用了外部函数的变量
def func_outer(a):
b = 1
def func_inner():
c = a
b = d
装饰器 (框架中用到)
格式:
def outer(func):
def inner(*args, **kwargs):
# 在func函数执行之前,需要的操作
ret = func(*args, **kwargs) func = inner
# 在func函数执行之后,需要的操作
return ret
return outer

@outer
def index():    # index= inner
    pass
    return True
场景:
1.有一个功能,是你知道会用到的,但是你不知道程序员在哪个地方会用到,搞成一个装饰器,把使用权交给程序员,程序员在设计程序的阶段,想往哪儿添加,直接在这个函数上添加装饰器就行了
2.日志模块:输出日志
装饰器使用:
@装饰器
def 被装饰的函数():
    pass

迭代器 (节省内存,只能for循环一次,不去取值时数据不存在)
可迭代(iterable)的:dir后有__iter__方法的是可迭代的
或者说:可被for循环的
如果是可迭代,而不是迭代器,那么可以被for循环多次
如:list、dict、tuple
迭代器:dir后有__iter__和__nect__是迭代器
如果是迭代器,那么数据只能被for循环一次
如:文件句柄、网络操作、数据库操作

生成器

匿名函数

猜你喜欢

转载自www.cnblogs.com/Shawn-fd/p/12348884.html