在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))
看到這裡就明白了吧,從第乙個函式修飾符開始,自下而上做引數傳遞,這樣實際是使用了約定的函式修飾符達到函式巢狀的目的。記得沒錯j**a中ssh也有這樣的用法哦。
**:
python 修飾符 python 修飾符
修飾符基礎 閉包 什麼是閉包呢?標準的概念大家可以看wikipedia上的解釋 舉個例子 def do add base def add increase return base increase return add do add函式裡巢狀了乙個內層函式add,這個內層函式就是乙個閉包,其實可以也...
Java中修飾符的作用
1 訪問控制修飾符 作用 用於控制被修飾變數,方法,類的可見範圍 public的訪問級別是最高的,其次是protected,預設和private 成員變數和成員方法有四個訪問級別 公開,受保護,預設,私有 存在繼承關係時,父類不可以private,子類無法被繼承 頂層類是公開或者預設級別,該類不能被...
python 修飾符 python訪問修飾符
許可權訪問 偽許可權,只是壓縮時按規則換了變數名,python 的哲學是假定使用者都會使用 xx 以單下劃線開頭的表示的是protected型別的變數。即保護型別只能允許其本身與子類進行訪問。若內部變數標示,如 當使用 from m import 時,不會將以乙個下劃線開頭的物件引入 成俗約定,不做...