Python——裝飾器之前奏
阿新 • • 發佈:2018-12-20
如果要學習什麼是裝飾器,那麼就要先知道裝飾器的構成,可以說裝飾器是由以下三方面構成,分別為:
- 作用域
說是作用域,其實就是在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