Python中的符号
解釋經常在python源碼中看到的@,->和:等符號。python在函數名或類名首字母用_來表示私有接口(僅供內部使用)。
標注
關聯到某個變量、類屬性、函數形參或返回值的標簽,被約定作為類型提示來使用。
局部變量的標注在運行時不可訪問,但全局變量、類屬性和函數的標注會分別存放模塊、類和函數的 __annotations __特殊屬性中。
類型提示
標注為變量、類屬性、函數的形參或返回值指定預期的類型。
類型提示屬于可選項,Python 不要求提供,但其可對靜態類型分析工具起作用,并可協助 IDE 實現代碼補全與重構。
全局變量、類屬性和函數的類型提示可以使用 typing.get_type_hints() 來訪問,但局部變量則不可以。
typing.get_type_hints()
返回一個字典,字典內含有函數、方法、模塊或類對象的類型提示。
一般情況下,與 obj.__annotations __相同。此外,可通過在 globals 與 locals 命名空間里進行評估,以此來處理編碼為字符串字面量的前向引用。如有需要,在默認值設置為 None時,可為函數或方法注解添加 Optional[t]。對于類 C,則返回一個由所有__annotations__與 C.__mro__逆序合并而成的字典。
函數標注
即針對函數形參或返回值的標注。
函數標注通常用于類型提示:
形參標注:在形參名稱后面加 : expression 即可。
函數返回標注:在形參列表后加 -> expression即可。
例如以下函數預期接受兩個 int 參數并預期返回一個 int 值:
def sum_two_numbers(a: int, b: int) -> int:return a + b變量標注
對變量或類屬性的標注。
在標注變量或類屬性時,還可選擇為其賦值:
class C:field: 'annotation'變量標注通常被用作類型提示:
例如以下變量預期接受 int 類型的值:
裝飾器
返回值為另一個函數的函數,通常使用@wrapper語法形式進行函數變換。
裝飾器的常見例子包括 classmethod() 和 staticmethod()
裝飾器語法只是一種語法糖,以下兩個函數定義在語義上完全等價:
def f(...):... f = staticmethod(f)@staticmethod def f(...):...@staticmethod
將方法轉換為靜態方法。
靜態方法不會接收隱式的第一個參數。要聲明一個靜態方法,請使用此語法:
靜態方法的調用可以在類上進行 (例如 C.f()) 也可以在實例上進行 (例如 C().f())。
像所有裝飾器一樣,也可以像常規函數一樣調用 staticmethod ,并對其結果執行某些操作。比如某些情況下需要從類主體引用函數并且您希望避免自動轉換為實例方法。對于這些情況,請使用此語法:
@classmethod
把一個方法封裝成類方法。
一個類方法把類自己作為第一個實參,就像一個實例方法把實例自己作為第一個實參。請用以下習慣來聲明類方法:
類方法的調用可以在類上進行 (例如 C.f()) 也可以在實例上進行 (例如 C().f())。 其所屬類以外的類實例會被忽略。 如果類方法在其所屬類的派生類上調用,則該派生類對象會被作為隱含的第一個參數被傳入。
總結
以上是生活随笔為你收集整理的Python中的符号的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一生顺遂什么意思
- 下一篇: 怎么看电脑是32位还是64位的 如何知道