做自(zì)由與創造的先行者

Types: 12. Other Built-in Types

Python開(kāi)發手冊

12. Other Built-in Types

解釋器支持其他(tā)幾種對(duì)象。其中大(dà)多數隻支持一兩個操作(zuò)。

12.1。模塊

模塊上(shàng)唯一的特殊操作(zuò)是屬性訪問:m.name,其中m是模塊,名稱訪問m的符号表中定義的名稱。模塊屬性可以分配給。(請(qǐng)注意,該import語句嚴格來(lái)說不是對(duì)模塊對(duì)象的操作(zuò); import foo不需要名爲foo的模塊對(duì)象存在,而是需要某個名爲foo的模塊的(外(wài)部)定義。)

每個模塊的特殊屬性是__dict__。這(zhè)是包含模塊符号表的字典。修改這(zhè)個字典實際上(shàng)會(huì)改變模塊的符号表,但(dàn)直接賦值給__dict__屬性是不可能(néng)的(你(nǐ)可以寫m.__dict__['a'] = 1,定義m.a爲1,但(dàn)不能(néng)寫m.__dict__ = {})。__dict__不建議(yì)直接修改。

内置在解釋器中的模塊是這(zhè)樣寫的:。如果從(cóng)一個文(wén)件加載,它們被寫爲

12.2。類和(hé)類實例

請(qǐng)參閱對(duì)象,值和(hé)類型以及這(zhè)些(xiē)類的定義。

12.3。功能(néng)

函數對(duì)象由函數定義創建。函數對(duì)象的唯一操作(zuò)是調用(yòng)它:func(argument-list)。

實際上(shàng)有兩種功能(néng)對(duì)象:内置函數和(hé)用(yòng)戶定義函數。兩者都支持相同的操作(zuò)(來(lái)調用(yòng)函數),但(dàn)實現(xiàn)是不同的,因此不同的對(duì)象類型。

有關更多信息,請(qǐng)參閱函數定義

12.4。方法

方法是使用(yòng)屬性表示法調用(yòng)的函數。有兩種風(fēng)格:内置方法(如append()列表)和(hé)類實例方法。内置方法用(yòng)支持它們的類型來(lái)描述。

該實現(xiàn)爲類實例方法添加了(le)兩個特殊的隻讀屬性:m.im_self方法運行的對(duì)象,以及m.im_func實現(xiàn)該方法的函數。callingm(arg-1, arg-2, ..., arg-n)與calling完全等同m.im_func(m.im_self, arg-1, arg-2, ..., arg-n)。

類實例方法是綁定或非綁定的,分别指的是該方法是通過實例還是類來(lái)訪問。當一個方法被解除綁定時(shí),它的im_self屬性将被None調用(yòng),并且如果被調用(yòng),則self必須将一個顯式對(duì)象作(zuò)爲第一個參數傳遞。在這(zhè)種情況下(xià),self必須是未綁定方法的類(或該類的子類)的實例,否則TypeError會(huì)引發a。

和(hé)函數對(duì)象一樣,方法對(duì)象也(yě)支持獲取任意屬性。但(dàn)是,由于方法屬性實際上(shàng)存儲在底層函數對(duì)象(meth.im_func)中,因此禁止在綁定或未綁定方法上(shàng)設置方法屬性。嘗試在方法上(shàng)設置屬性會(huì)導緻AttributeError引發。爲了(le)設置一個方法屬性,你(nǐ)需要在底層函數對(duì)象上(shàng)明(míng)确地設置它:

>>> class C:

... def method(self):

... pass

...

>>> c = C()

>>> c.method.whoami = 'my name is method' # can't set on the method

Traceback (most recent call last):

File "", line 1, in

AttributeError: 'instancemethod' object has no attribute 'whoami'

>>> c.method.im_func.whoami = 'my name is method'

>>> c.method.whoami

'my name is method'

複制

有關更多信息,請(qǐng)參閱标準類型層次結構

12.5。代碼對(duì)象

代碼對(duì)象被實現(xiàn)用(yòng)來(lái)表示“僞編譯”的可執行Python代碼,如函數體。它們不同于函數對(duì)象,因爲它們不包含對(duì)其全局執行環境的引用(yòng)。代碼對(duì)象由内置compile()函數返回,并可以通過函數對(duì)象的func_code屬性提取。另請(qǐng)參閱code模塊。

通過将代碼對(duì)象(而不是源字符串)傳遞給exec語句或内置eval()函數,可以執行或評估代碼對(duì)象。

有關更多信息,請(qǐng)參閱标準類型層次結構

12.6。鍵入對(duì)象

類型對(duì)象表示各種對(duì)象類型。對(duì)象的類型由内置函數訪問type()。類型沒有特别的操作(zuò)。标準模塊types定義了(le)所有标準内置類型的名稱。

類型是這(zhè)樣寫的:

12.7。空(kōng)對(duì)象

該對(duì)象由不顯式返回值的函數返回。它不支持特殊操作(zuò)。隻有一個空(kōng)對(duì)象,名爲None(内置名稱)。

它被寫爲None。

12.8。省略對(duì)象

該對(duì)象由擴展切片符号使用(yòng)(請(qǐng)參見切片)。它不支持特殊操作(zuò)。有一個省略号對(duì)象,名爲Ellipsis(内置名稱)。

它被寫爲Ellipsis。當在一個下(xià)标,也(yě)可以寫爲...,例如seq[...]。

12.9。未實現(xiàn)的對(duì)象

當它們被要求對(duì)不支持的類型進行操作(zuò)時(shí),該對(duì)象從(cóng)比較和(hé)二進制操作(zuò)中返回。有關更多信息,請(qǐng)參閱比較。

它被寫爲NotImplemented。

12.10。布爾值

布爾值是兩個常量對(duì)象False和(hé)True。它們被用(yòng)來(lái)表示真值(盡管其他(tā)值也(yě)可以被認爲是錯誤或真實的)。在數值上(shàng)下(xià)文(wén)中(例如,當用(yòng)作(zuò)算(suàn)術運算(suàn)符的參數時(shí)),它們的行爲分别與整數0和(hé)1相同。bool()如果該值可以被解釋爲真值(參見上(shàng)面的真值測試部分),那麽可以使用(yòng)内置函數将任何值轉換爲布爾值。

它們分别寫成False和(hé)True。

12.11。内部對(duì)象

糾錯

請(qǐng)參閱此信息的标準類型層次結構。它描述了(le)堆棧框架對(duì)象,追溯對(duì)象和(hé)切片對(duì)象。

網站(zhàn)建設開(kāi)發|APP設計(jì)開(kāi)發|小(xiǎo)程序建設開(kāi)發
下(xià)一篇:Types: 13. Special Attributes
上(shàng)一篇:Types: 11. Context Manager Types