Python之装饰器
在python这个国家里,装饰器以及后面讲到的迭代器,生成器都是十二分重要的高级函数。
如果将装饰器比作取经路上的一个大boss,那么想干掉它必须拿到三件法宝。
装饰器是一个函数,是为了其他函数增加功能使用的。
法宝一:作用域
'''
L_E_G_B: 从内到外,B是python内置变量
L: a = 7
E: a = 5
G: x = 3
B: python内置变量
'''
x = 3
def f():
a = 5
def inner():
a = 7
return a
法宝二:高阶函数
函数名可以作为参数输入
函数名可以作为返回值
法宝三:闭包
'''
关于闭包
闭包 = 函数块 + 定义函数时的环境
定义
如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包(closure)
'''
def outer():
x = 10
def inner(): # 条件1:inner就是内部函数
print(x) # 条件2:外部环境的一个变量
return inner() # 结果:内部函数就是一个闭包
outer()
# inner()# 局部变量,全局无法调用
# x # 局部变量,全局无法调用
一、列表生成式、生成器&迭代器
1.1 列表生成式
两种创建方式
方式一:列表生成式可以是变量
方式二:列表生成式也可以是函数
********列表生成式可以是变量***********
a = [x * 2 for x in range(10)]
print(a