def b1(fnc):
print "b1"
return fnc
@b1
def a1():
print "a1"
if __name__ == "__main__":
a1() # will print b1 a1
所以,當我使用@b1
,A1被轉向a1 = b1(a1)
,對不對? 然後,當我說:
a1()
這變成:
b1(a1)
,然後進入:
print "b1"
return fnc
凡/究竟是誰打電話FNC?我有一種感覺,我在問一個非常愚蠢的問題,但我想明白。
關鍵的想法是,函數定義只是另一個被執行的代碼的和平(通常只有一次)。裝飾器只在執行函數定義時執行。 –