1. 程式人生 > >Python修飾符 (一)—— 函式修飾符 “@”

Python修飾符 (一)—— 函式修飾符 “@”

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