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