在Python 2.4以上的的函數中偶爾會看到函數定義的上一行有@functionName的修飾,這一下這個語法細節,其實這有點像C語言帶參數的宏操作,解釋器讀到這樣的修飾之後,會先解析@後的內容,直接就把@下一行的函數或者類作為@後邊的函數的參數,然後將返回值賦值給下一行修飾的函數對象。
def funA(a):
print 'funA'
def funB(b):
print 'funB'
@funA
@funB
def funC():
print 'funC'
result:
>>> ================================ RESTART ================================
>>>
funB
funA
可以這樣思考,return funA(funB(funC))
看到這裡就明白了吧,從第一個函數修飾符開始,自下而上做參數傳遞,這樣實際是使用了約定的函數修飾符達到函數嵌套的目的。記得沒錯Java中SSH也有這樣的用法哦。
Python 的詳細介紹:請點這裡
Python 的下載地址:請點這裡