Python修飾符 (一)—— 函式修飾符 “@”
阿新 • • 發佈:2018-12-14
Python函式修飾符,“@”,與其說是修飾函式倒不如說是引用、呼叫它修飾的函式。
舉個栗子,下面的一段程式碼,裡面兩個函式,沒有被呼叫,也會有輸出結果:
def test(f):
print "before ..."
f()
print "after ..."
@test
def func():
print "func was called"
直接執行,輸出結果:
before ...
func was called
after ...
上面程式碼可以看出來,只定義了兩個函式: test和func。沒有地方呼叫它們。如果沒有“@test”,執行應該是沒有任何輸出的。
但是,Python直譯器讀到函式修飾符“@”的時候,後面步驟會是這樣了:
1. 去呼叫 test函式,test函式的入口引數就是那個叫“func”的函式;
2. test函式被執行,入口引數的(也就是func函式)會被呼叫(執行);
換言之,修飾符帶的那個函式的入口引數,就是下面的那個整個的函式。有點兒類似JavaScript裡面的 function a (function () { ... });
再來看一個例子:
def test(func): func() print "call test" def test1(f): f() print "call test1" def main(): @test def fun(): print "call fun" @test1 def fun1(): print "call fun1" main()
輸出結果:
call fun
call fun1
call test1
call test
需要注意的:
1. 函式先定義,再修飾它;反之會編譯器不認識;
2. 修飾符“@”後面必須是之前定義的某一個函式;
3. 每個函式只能有一個修飾符,大於等於兩個則不可以 --------------------- 作者:9命怪貓 來源:CSDN 原文:https://blog.csdn.net/972301/article/details/59537712?utm_source=copy