Python小妙招 函式修飾符 用法總結

2021-10-10 09:07:34 字數 918 閱讀 6583

通過decorator裝飾器模式,使得**更加簡單。

除去某些特定字串(@classmethod,@property,@staticmethod)以外的修飾符,都是普通修飾符。

當直譯器讀到@修飾符之後,會先解析@後面的內容,然後直接把@下一行的函式或者類作為@後邊的函式引數,然後將返回值賦值給下一行修飾的函式物件。

例如:

@a

@bdefc(

):..

.

計算結果為:a(b(c()))

用classmethod修飾表示這是乙個類方法,無需傳入物件引數,但仍需用物件例項呼叫。如果沒有用@classmethod修飾,則表示這是乙個物件方法,使用時必須與乙個物件繫結。

@property把乙個例項方法,轉化為乙個唯讀例項屬性,使得函式可像例項屬性一樣被訪問(無需括號)。

class

student

: @property

defthisisstaticmethod()

:print

("hello world!"

)student.thisisstaticmethod

被@staticmethod修飾表示這是乙個類的靜態方法,可以直接被類呼叫,與@classmethod的區別在於classmethod對應方法的第乙個引數為self,而staticmethod不是。

將函式轉為類靜態方法,被類呼叫而不是被物件呼叫。

class

student

: @staticmethod

defthisisstaticmethod()

:print

("hello world!"

)student.thisisstaticmethod(

)

python 修飾符 python 修飾符

修飾符基礎 閉包 什麼是閉包呢?標準的概念大家可以看wikipedia上的解釋 舉個例子 def do add base def add increase return base increase return add do add函式裡巢狀了乙個內層函式add,這個內層函式就是乙個閉包,其實可以也...

python 函式修飾符

def log func print log開始 func print log結束 如果log函式返回乙個字串,test就是乙個字串了 print test 輸出 log開始 test log結束 可見,test函式被替換了,但是其 name 屬性也變了。替換以後函式的一些屬性改變了,如 name ...

python 修飾符 python訪問修飾符

許可權訪問 偽許可權,只是壓縮時按規則換了變數名,python 的哲學是假定使用者都會使用 xx 以單下劃線開頭的表示的是protected型別的變數。即保護型別只能允許其本身與子類進行訪問。若內部變數標示,如 當使用 from m import 時,不會將以乙個下劃線開頭的物件引入 成俗約定,不做...