python基礎 裝飾器

2022-03-17 07:27:59 字數 1537 閱讀 1759

def foo():

return 123

a=foo();

b=foo;

print(a)

print(b)

123

解釋:把函式foo賦值給a和b,a 賦值的是呼叫後的函式,變數的值就是返回值。b 賦值的是呼叫前的函式,所以b 就是那個賦值的函式。函式本身+(),就是呼叫。
callable(a)
false
callable(b)
true
解釋: 用callable判斷某個東西是否可以被呼叫,call是呼叫的意思,able是「能的」形容詞字尾,翻譯就是可呼叫的。b是函式本身,可以被呼叫,a是函式的結果,不能被呼叫。
def foo():

print(1234)

def bar(func):

func()

bar(foo)

1234
解釋:我先定義乙個函式foo,然後再定義乙個函式bar,我呼叫foo的時候,即foo(),沒有設定傳遞引數,列印了1234.我呼叫bar的時候,傳遞了乙個函式foo作為引數,即bar(foo),得到的結果就是func(),呼叫函式本身,所以得到1234的結果。
def foo(x):

def bar():

print(x)

bar()

foo(1234)

1234
解釋:內層函式可以呼叫外層函式傳遞的引數,f(1234)傳遞給了內層函式。內層沒有找到x變數的值,就去臨近的外層變數尋找。外層傳遞乙個1234,就傳遞給內層了。最後一行的bar()是在外層函式的內部直接呼叫內層函式。

函式巢狀定義就是可以把函式看成定義乙個變數,類似於b=1,還有就是內層函式可以呼叫外層函式傳遞的引數,記住這兩點就可以了。

def bar():

print(1234)

def foo(func):

return func

a=foo(bar)

a

def deco(func):

print("pre command")

ret=func()

print("post command")

return ret

def foo():

return(1234)

return 444

foo()

pre command

post command

1234

python基礎 裝飾器

裝飾器本質就是函式,功能是為其他函式新增附加功能。原則 不修改被修飾函式的源 不修改被修飾函式的呼叫方式 裝飾器的知識儲備 裝飾器 高階函式 函式巢狀 閉包 import time 定義乙個裝飾器計算函式執行時間 def timer func start time time.time res fun...

python基礎 裝飾器

裝飾器形成的過程 最簡單的裝飾器 有返回值的 有乙個引數 萬能引數 裝飾器的作用 原則 開放封閉原則 語法糖 裝飾器的固定模式 import time print time.time 獲取當前時間 time.sleep 10 讓程式在執行到這個位置的時候停一會兒 def timmer f 裝飾器函式...

Python基礎 裝飾器

裝飾器是程式開發中經常會用到的乙個功能,程式開發的基礎知識,用好了裝飾器,開發效率如虎添翼,所以這也是python面試中必問的問題,但對於好多初次接觸這個知識的人來講,這個功能有點繞,這個都不會,別跟人家說你會python,看了下面的文章,保證你學會裝飾器。裝飾器 decorator 首先我們需要知...