Python——装饰器之前奏
如果要学习什么是装饰器,那么就要先知道装饰器的构成,可以说装饰器是由以下三方面构成,分别为:
- 作用域
说是作用域,其实就是在Python中的L_E_G_B的查找顺序,看代码吧
a = abs(-2) #abs是Python内置的函数,其实这时的abs()就相当于是一个built-in变量
b = 3 #这就相当于是一个global变量
def one_function():
c = 1 #这就是一个enclosing变量
def two_function():
d = -1 #这就是一个local变量
e = c+b
return e
#比如说在函数two_function中,变量d中调用b,就会先在自身的函数中查找b这个变量,如果未查找到,则会进入上一层函数中进行查找,即one_function函数中查找b这个变量。
#查找到时被调用.如果未查找到,则会进入全局变量进行查找.
关于装饰器的第二个方面就是关于高阶函数
- 高阶函数
首先来说说高阶函数的条件:
1、函数名可以进行赋值。
2、函数名可以作为函数参数,还可以作为函数的返回值。
#首先创建一个函数
def add(x,y,f):
return f(x)+f(y)
#然后我们调用这个函数
add(-5,9,abs) #14
#等价于abs(-5)+abs(9)
- 闭包
接下来说一说闭包
#接下来说一说闭包,首先我们创建一个函数
def foo3():
def inner():
return 8
return inner
#在这个函数中,我们如何得到8这个值呢,
foo3()()
8
inner()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'inner' is not defined