亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

python基礎(chǔ)教程:內(nèi)置函數(shù)(二)

xiaodao / 2673人閱讀

摘要:繼續(xù)講述更多的的內(nèi)置函數(shù)。傳遞以切換緩沖關(guān)閉僅允許在二進(jìn)制模式下,選擇行緩沖僅在文本模式下可用,并且的整數(shù)以指示固定大小的塊緩沖區(qū)的大小以字節(jié)為單位。啟動(dòng)內(nèi)置的幫助系統(tǒng)此函數(shù)主要在交互式中使用。

繼續(xù)講述更多的Python的內(nèi)置函數(shù)。

IO操作

input([prompt])
如果存在 prompt 實(shí)參,則將其寫(xiě)入標(biāo)準(zhǔn)輸出,末尾不帶換行符。接下來(lái),該函數(shù)從輸入中讀取一行,將其轉(zhuǎn)換為字符串(除了末尾的換行符)并返回。當(dāng)讀取到 EOF 時(shí),則觸發(fā) EOFError。例如:

In [25]: s = input(">>")
>>認(rèn)真學(xué)python

In [26]: s
Out[26]: "認(rèn)真學(xué)python"

如果加載了 readline 模塊,input() 將使用它來(lái)提供復(fù)雜的行編輯和歷史記錄功能。

open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
打開(kāi) file 并返回對(duì)應(yīng)的 file object。如果該文件不能打開(kāi),則觸發(fā) OSError。

file 是一個(gè) path-like object,表示將要打開(kāi)的文件的路徑(絕對(duì)路徑或者當(dāng)前工作目錄的相對(duì)路徑),也可以是要被封裝的整數(shù)類型文件描述符。(如果是文件描述符,它會(huì)隨著返回的 I/O 對(duì)象關(guān)閉而關(guān)閉,除非 closefd 被設(shè)為 False 。)

mode 是一個(gè)可選字符串,用于指定打開(kāi)文件的模式。默認(rèn)值是 ‘r’ ,這意味著它以文本模式打開(kāi)并讀取。其他常見(jiàn)模式有:寫(xiě)入 ‘w’ (截?cái)嘁呀?jīng)存在的文件);排它性創(chuàng)建 ‘x’ ;追加寫(xiě) ‘a(chǎn)’ (在 一些 Unix 系統(tǒng)上,無(wú)論當(dāng)前的文件指針在什么位置,所有 寫(xiě)入都會(huì)追加到文件末尾)。在文本模式,如果 encoding 沒(méi)有指定,則根據(jù)平臺(tái)來(lái)決定使用的編碼:使用 locale.getpreferredencoding(False) 來(lái)獲取本地編碼。(要讀取和寫(xiě)入原始字節(jié),請(qǐng)使用二進(jìn)制模式并不要指定 encoding。)可用的模式有:

字符 意義
‘r’ 讀?。J(rèn))
‘w’ 寫(xiě)入,并先截?cái)辔募?br>‘x’ 排它性創(chuàng)建,如果文件已存在則失敗
‘a(chǎn)’ 寫(xiě)入,如果文件存在則在末尾追加
‘b’ 二進(jìn)制模式
‘t’ 文本模式(默認(rèn))
‘+’ 更新磁盤(pán)文件(讀取并寫(xiě)入)
‘U’ universal newlines 模式(已棄用)
默認(rèn)的模式是 ‘r’ (打開(kāi)并讀取文本,同 ‘rt’ )。對(duì)于二進(jìn)制寫(xiě)入, ‘w+b’ 模式打開(kāi)并把文件截?cái)喑?0 字節(jié); ‘r+b’ 則不會(huì)截?cái)唷?/p>

正如在 Overview 中提到的,Python區(qū)分二進(jìn)制和文本I/O。以二進(jìn)制模式打開(kāi)的文件(包括 mode 參數(shù)中的 ‘b’ )返回的內(nèi)容為 bytes對(duì)象,不進(jìn)行任何解碼。在文本模式下(默認(rèn)情況下,或者在 *mode* 參數(shù)中包含‘t’` )時(shí),文件內(nèi)容返回為 str ,首先使用指定的 encoding (如果給定)或者使用平臺(tái)默認(rèn)的的字節(jié)編碼解碼。

注解 Python不依賴于底層操作系統(tǒng)的文本文件概念;所有處理都由Python本身完成,因此與平臺(tái)無(wú)關(guān)。
buffering 是一個(gè)可選的整數(shù),用于設(shè)置緩沖策略。傳遞0以切換緩沖關(guān)閉(僅允許在二進(jìn)制模式下),1選擇行緩沖(僅在文本模式下可用),并且>1的整數(shù)以指示固定大小的塊緩沖區(qū)的大?。ㄒ宰止?jié)為單位)。如果沒(méi)有給出 buffering 參數(shù),則默認(rèn)緩沖策略的工作方式如下:

二進(jìn)制文件以固定大小的塊進(jìn)行緩沖;使用啟發(fā)式方法選擇緩沖區(qū)的大小,嘗試確定底層設(shè)備的“塊大小”或使用 io.DEFAULT_BUFFER_SIZE。在許多系統(tǒng)上,緩沖區(qū)的長(zhǎng)度通常為4096或8192字節(jié)。
“交互式”文本文件( isatty() 返回 True 的文件)使用行緩沖。其他文本文件使用上述策略用于二進(jìn)制文件。
encoding 是用于解碼或編碼文件的編碼的名稱。這應(yīng)該只在文本模式下使用。默認(rèn)編碼是依賴于平臺(tái)的(不 管 locale.getpreferredencoding() 返回何值),但可以使用任何Python支持的 text encoding 。有關(guān)支持的編碼列表,請(qǐng)參閱 codecs 模塊。

errors 是一個(gè)可選的字符串參數(shù),用于指定如何處理編碼和解碼錯(cuò)誤 – 這不能在二進(jìn)制模式下使用??梢允褂酶鞣N標(biāo)準(zhǔn)錯(cuò)誤處理程序(列在 Error Handlers ),但是使用 codecs.register_error() 注冊(cè)的任何錯(cuò)誤處理名稱也是有效的。標(biāo)準(zhǔn)名稱包括:

如果存在編碼錯(cuò)誤,’strict’ 會(huì)引發(fā) ValueError 異常。 默認(rèn)值 None 具有相同的效果。
‘ignore’ 忽略錯(cuò)誤。請(qǐng)注意,忽略編碼錯(cuò)誤可能會(huì)導(dǎo)致數(shù)據(jù)丟失。
‘replace’ 會(huì)將替換標(biāo)記(例如 ‘?’ )插入有錯(cuò)誤數(shù)據(jù)的地方。
‘surrogateescape’ 將表示任何不正確的字節(jié)作為Unicode專用區(qū)中的代碼點(diǎn),范圍從U+DC80到U+DCFF。當(dāng)在寫(xiě)入數(shù)據(jù)時(shí)使用 surrogateescape 錯(cuò)誤處理程序時(shí),這些私有代碼點(diǎn)將被轉(zhuǎn)回到相同的字節(jié)中。這對(duì)于處理未知編碼的文件很有用。
只有在寫(xiě)入文件時(shí)才支持 ‘xmlcharrefreplace’。編碼不支持的字符將替換為相應(yīng)的XML字符引用 nnn;。
‘backslashreplace’ 用Python的反向轉(zhuǎn)義序列替換格式錯(cuò)誤的數(shù)據(jù)。
‘namereplace’ (也只在編寫(xiě)時(shí)支持)用 N{…} 轉(zhuǎn)義序列替換不支持的字符。
newline 控制 universal newlines 模式如何生效(它僅適用于文本模式)。它可以是 None,”,’n’,’r’ 和 ‘rn’。它的工作原理:

從流中讀取輸入時(shí),如果 newline 為 None,則啟用通用換行模式。輸入中的行可以以 ‘n’,’r’ 或 ‘rn’ 結(jié)尾,這些行被翻譯成 ‘n’ 在返回呼叫者之前。如果它是 ”,則啟用通用換行模式,但行結(jié)尾將返回給調(diào)用者未翻譯。如果它具有任何其他合法值,則輸入行僅由給定字符串終止,并且行結(jié)尾將返回給未調(diào)用的調(diào)用者。
將輸出寫(xiě)入流時(shí),如果 newline 為 None,則寫(xiě)入的任何 ‘n’ 字符都將轉(zhuǎn)換為系統(tǒng)默認(rèn)行分隔符 os.linesep。如果 newline 是 ” 或 ‘n’,則不進(jìn)行翻譯。如果 newline 是任何其他合法值,則寫(xiě)入的任何 ‘n’ 字符將被轉(zhuǎn)換為給定的字符串。
如果 closefd 是 False 并且給出了文件描述符而不是文件名,那么當(dāng)文件關(guān)閉時(shí),底層文件描述符將保持打開(kāi)狀態(tài)。如果給出文件名則 closefd 必須為 True (默認(rèn)值),否則將引發(fā)錯(cuò)誤。

可以通過(guò)傳遞可調(diào)用的 opener 來(lái)使用自定義開(kāi)啟器。然后通過(guò)使用參數(shù)( file,flags )調(diào)用 opener 獲得文件對(duì)象的基礎(chǔ)文件描述符。 opener 必須返回一個(gè)打開(kāi)的文件描述符(使用 os.open as opener 時(shí)與傳遞 None 的效果相同)。

print(*objects, sep=" ", end=" ", file=sys.stdout, flush=False)
打印objects到文本流file,以分隔符sep分隔多個(gè)對(duì)象,并以end結(jié)尾。

語(yǔ)法相關(guān)

breakpoint(*args, **kwargs)
此函數(shù)會(huì)在調(diào)用時(shí)將你陷入調(diào)試器中。具體來(lái)說(shuō),它調(diào)用?sys.breakpointhook(),直接傳遞?args?和?kws?。默認(rèn)情況下,?sys.breakpointhook()?調(diào)用?pdb.set_trace()且沒(méi)有參數(shù)。在這種情況下,它純粹是一個(gè)便利函數(shù),因此您不必顯式導(dǎo)入?pdb?且鍵入盡可能少的代碼即可進(jìn)入調(diào)試器。但是,?sys.breakpointhook()?可以設(shè)置為其他一些函數(shù)并被?breakpoint()?自動(dòng)調(diào)用,以允許進(jìn)入你想用的調(diào)試器。

compile(source, filename, mode, flags=0, dont_inherit=False, optimize=-1)
將 source 編譯成代碼或 AST 對(duì)象。代碼對(duì)象可以被 exec() 或 eval() 執(zhí)行。source 可以是常規(guī)的字符串、字節(jié)字符串,或者 AST 對(duì)象。

ascii(object)
返回一個(gè)只用ASCII碼表示的對(duì)象。類似函數(shù)repr()返回一個(gè)對(duì)象的可打印字符串表示,但是會(huì)把其中非ASCII的字符用x,?u,?U進(jìn)行轉(zhuǎn)義。比如:

In [23]: ascii([1,2,3])
Out[23]: "[1, 2, 3]"

In [24]: ascii("編程")
Out[24]: ""u7f16u7a0b""

In [25]: ascii("a
b")
Out[25]: ""a
b""

repr(object)
返回包含對(duì)象的可打印表示的字符串。對(duì)于許多類型,此函數(shù)嘗試返回一個(gè)字符串,該字符串在傳遞給eval()時(shí)會(huì)產(chǎn)生具有相同值的對(duì)象,否則表示形式是一個(gè)用尖括號(hào)括起來(lái)的字符串,它包含對(duì)象類型的名稱附加信息通常包括對(duì)象的名稱和地址。 類可以通過(guò)定義repr()方法來(lái)控制此函數(shù)為其實(shí)例返回的內(nèi)容。

In [54]: repr({"a": 1, "b":2, "c":3})
Out[54]: "{"a": 1, "b": 2, "c": 3}"

In [55]: s = repr({"a": 1, "b":2, "c":3})

In [56]: eval(s)
Out[56]: {"a": 1, "b": 2, "c": 3}

eval(expression, globals=None, locals=None)
實(shí)參是一個(gè)字符串,以及可選的 globals 和 locals。globals 實(shí)參必須是一個(gè)字典。locals 可以是任何映射對(duì)象。
這個(gè)函數(shù)也可以用來(lái)執(zhí)行任何代碼對(duì)象(如 compile() 創(chuàng)建的)。這種情況下,參數(shù)是代碼對(duì)象,而不是字符串。如果編譯該對(duì)象時(shí)的 mode 實(shí)參是 ‘exec’ 那么 eval() 返回值為 None 。

In [17]: a = 2

In [18]: eval("a+2")
Out[18]: 4

In [19]: eval("3*3")
Out[19]: 9

In [20]: d = ascii({"a":1, "b":2})

In [21]: d
Out[21]: "{"a": 1, "b": 2}"

In [22]: eval(d)
Out[22]: {"a": 1, "b": 2}

提示: exec() 函數(shù)支持動(dòng)態(tài)執(zhí)行語(yǔ)句。 globals() 和 locals() 函數(shù)各自返回當(dāng)前的全局和本地字典,因此您可以將它們傳遞給 eval() 或 exec() 來(lái)使用。

exec(object[, globals[, locals]])
這個(gè)函數(shù)支持動(dòng)態(tài)執(zhí)行 Python 代碼。object 必須是字符串或者代碼對(duì)象。如果是字符串,那么該字符串將被解析為一系列 Python 語(yǔ)句并執(zhí)行(除非發(fā)生語(yǔ)法錯(cuò)誤)。[1] 如果是代碼對(duì)象,它將被直接執(zhí)行。在任何情況下,被執(zhí)行的代碼都需要和文件輸入一樣是有效的(見(jiàn)參考手冊(cè)中關(guān)于文件輸入的章節(jié))。請(qǐng)注意即使在傳遞給 exec() 函數(shù)的代碼的上下文中,return 和 yield 語(yǔ)句也不能在函數(shù)定義之外使用。該函數(shù)返回值是 None 。

In [24]: exec("a=2;x=a*3;print(x)")
6

globals()
返回表示當(dāng)前全局符號(hào)表的字典。這總是當(dāng)前模塊的字典(在函數(shù)或方法中,不是調(diào)用它的模塊,而是定義它的模塊)。

locals()
更新并返回表示當(dāng)前本地符號(hào)表的字典。在函數(shù)塊而不是類塊中調(diào)用 locals() 時(shí)會(huì)返回自由變量。

注解 不要更改此字典的內(nèi)容;更改不會(huì)影響解釋器使用的局部變量或自由變量的值。

help([object])
啟動(dòng)內(nèi)置的幫助系統(tǒng)(此函數(shù)主要在交互式中使用)。如果沒(méi)有實(shí)參,解釋器控制臺(tái)里會(huì)啟動(dòng)交互式幫助系統(tǒng)。如果實(shí)參是一個(gè)字符串,則在模塊、函數(shù)、類、方法、關(guān)鍵字或文檔主題中搜索該字符串,并在控制臺(tái)上打印幫助信息。如果實(shí)參是其他任意對(duì)象,則會(huì)生成該對(duì)象的幫助頁(yè)。

該函數(shù)通過(guò) site 模塊加入到內(nèi)置命名空間。

memoryview(obj)
返回由給定實(shí)參創(chuàng)建的“內(nèi)存視圖”對(duì)象。有關(guān)詳細(xì)信息,請(qǐng)參閱 Memory Views。

類相關(guān)

@classmethod
把一個(gè)方法封裝成類方法。

一個(gè)類方法把類自己作為第一個(gè)實(shí)參,就像一個(gè)實(shí)例方法把實(shí)例自己作為第一個(gè)實(shí)參。請(qǐng)用以下習(xí)慣來(lái)聲明類方法:

class A:
    @classmethod
    def func(cls, arg1, ...): ...

@classmethod形式是函數(shù)裝飾器。
它可以同時(shí)在類(如 C.f())和實(shí)例(如 C().f())上調(diào)用。實(shí)例除了它的類信息,其他都會(huì)被忽略。如果一個(gè)類方法在子類上調(diào)用,子類會(huì)作為第一個(gè)實(shí)參傳入。

類方法和 C++ 和 Java 的靜態(tài)方法是有區(qū)別的。如果你想要靜態(tài)方法,請(qǐng)看 staticmethod()。

@staticmethod

將方法轉(zhuǎn)換為靜態(tài)方法。
靜態(tài)方法不會(huì)接收隱式的第一個(gè)參數(shù)。要聲明一個(gè)靜態(tài)方法,請(qǐng)使用此語(yǔ)法

class A:
    @staticmethod
    def func(arg1, arg2, ...): ...

@staticmethod 形式函數(shù)是一個(gè) decorator 函數(shù)。它可以在類(例如 C.f() )或?qū)嵗ɡ?C().f() )上調(diào)用。實(shí)例會(huì)被忽略,只需要類本身。

Python中的靜態(tài)方法與Java或C ++中的靜態(tài)方法類似。另請(qǐng)參閱 classmethod() ,用于創(chuàng)建備用類構(gòu)造函數(shù)的變體。

像所有裝飾器一樣,也可以像常規(guī)函數(shù)一樣調(diào)用 staticmethod ,并對(duì)其結(jié)果執(zhí)行某些操作。比如某些情況下需要從類主體引用函數(shù)并且您希望避免自動(dòng)轉(zhuǎn)換為實(shí)例方法。對(duì)于這些情況,請(qǐng)使用此語(yǔ)法:

class A:
    buildin_open = staticmethod(open)

issubclass(class, classinfo)
如果 class 是 classinfo 的子類(直接、間接或 虛擬 的),則返回 true。classinfo 可以是類對(duì)象的元組,此時(shí) classinfo 中的每個(gè)元素都會(huì)被檢查。其他情況,會(huì)觸發(fā) TypeError 異常。

class?property(fget=None, fset=None, fdel=None, doc=None)
返回 property 屬性。

fget 是獲取屬性值的函數(shù)。 fset 是用于設(shè)置屬性值的函數(shù)。 fdel 是用于刪除屬性值的函數(shù)。并且 doc 為屬性對(duì)象創(chuàng)建文檔字符串。

一個(gè)典型的用法是定義一個(gè)托管屬性 x:

class A:
    def __init__(self):
        self._x = None

    def getx(self):
        return self._x

    def setx(self, value):
        self._x = value

    def delx(self):
        del self._x

    x = property(getx, setx, delx, "I"m the "x" property.")

如果 a 是 A 的實(shí)例,a.x 將調(diào)用getter,a.x = value 將調(diào)用setter, del a.x 將調(diào)用deleter。

如果提供了doc參數(shù),則它就是這個(gè)屬性的docstring。否則,這個(gè)屬性會(huì)拷貝fget的docstring。

通過(guò)裝飾器可以輕松實(shí)現(xiàn)可讀屬性:

class Point:
    def __init__(self):
        self._x = 0
        self._y = 0

    @property
    def x(self):
        """Get the current x"""
        return self._x

裝飾器@property把方法x()變?yōu)橐粋€(gè)“getter”只讀的同名屬性,并把x的docstring“Get the current x”作為屬性的docstring。

屬性對(duì)象具有可用作裝飾器的getter,setter和deleter方法,這些方法創(chuàng)建屬性的副本,并將相應(yīng)的訪問(wèn)器函數(shù)設(shè)置為裝飾函數(shù)。參考下面的例子:

class A:
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I"m the "x" property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

這段代碼與第一個(gè)示例完全等效。 要保證其他函數(shù)指定與原始屬性相同的名稱(在本例中為x)。

返回的屬性對(duì)象還具有與構(gòu)造函數(shù)參數(shù)對(duì)應(yīng)的屬性fget,fset和fdel。

Python 3.5版更改:屬性對(duì)象的docstring現(xiàn)在可寫(xiě)了。

super([type[, object-or-type]])

返回將方法調(diào)用委托給父類或兄弟類類型的代理對(duì)象。這對(duì)于訪問(wèn)已在類中重寫(xiě)的繼承方法很有用。搜索順序與getattr()使用的搜索順序相同,只是跳過(guò)了類型本身。

該類型的mro屬性列出了getattr()和super()使用的方法解析搜索順序。該屬性是動(dòng)態(tài)的,只要更新繼承層次結(jié)構(gòu),就可以更改該屬性。

如果省略第二個(gè)參數(shù),則返回的超級(jí)對(duì)象是未綁定的。如果第二個(gè)參數(shù)是一個(gè)對(duì)象,則isinstance(obj,type)必須為true。如果第二個(gè)參數(shù)是一個(gè)類型,則issubclass(type2,type)必須為true(這對(duì)于classmethods很有用)。

super有兩個(gè)典型的用例。在具有單繼承的類層次結(jié)構(gòu)中,super可用于引用父類而不顯式命名它們,從而使代碼更易于維護(hù)。這種用法與其他編程語(yǔ)言中super的使用密切相關(guān)。

第二個(gè)用例是在動(dòng)態(tài)執(zhí)行環(huán)境中支持協(xié)作多重繼承。此用例是Python獨(dú)有的,在靜態(tài)編譯語(yǔ)言或僅支持單繼承的語(yǔ)言中找不到。這使得實(shí)現(xiàn)“菱形圖”成為可能,其中多個(gè)基類實(shí)現(xiàn)相同的方法。好的設(shè)計(jì)要求此方法在每種情況下都具有相同的調(diào)用簽名(因?yàn)檎{(diào)用的順序是在運(yùn)行時(shí)確定的,因?yàn)樵擁樞蜻m應(yīng)類層次結(jié)構(gòu)中的更改,并且因?yàn)樵擁樞蚩梢园ㄔ谶\(yùn)行時(shí)之前未知的兄弟類)。

對(duì)于這兩種用例,典型的超類調(diào)用如下所示:

class B(A):
    def method(self, arg):
        super().method(arg) # 相當(dāng)于:super(B, self).method(arg)

注意,super()是作為顯式點(diǎn)狀屬性查找的綁定過(guò)程的一部分實(shí)現(xiàn)的,例如super().getitem(name)。它通過(guò)實(shí)現(xiàn)自己的getattribute()方法來(lái)實(shí)現(xiàn),它以可預(yù)測(cè)的順序搜索類,支持協(xié)作多重繼承。 因此,對(duì)于使用語(yǔ)句或運(yùn)算符(如super()[name])進(jìn)行隱式查找,未定義super()。

另外請(qǐng)注意,除零參數(shù)形式外,super()不限于使用內(nèi)部方法。 兩個(gè)參數(shù)形式完全指定參數(shù)并進(jìn)行適當(dāng)?shù)囊?。零參?shù)形式僅適用于類定義,因?yàn)榫幾g器填寫(xiě)必要的細(xì)節(jié)以正確檢索正在定義的類,以及訪問(wèn)普通方法的當(dāng)前實(shí)例。

對(duì)象操作

callable(object)
如果實(shí)參 object 是可調(diào)用的,返回 True,否則返回 False。如果返回真,調(diào)用仍可能會(huì)失??;但如果返回假,則調(diào)用 object 肯定會(huì)失敗。注意類是可調(diào)用的(調(diào)用類會(huì)返回一個(gè)新的實(shí)例)。如果實(shí)例的類有?call() 方法,則它是可調(diào)用。

delattr(object, name)
setattr() 相關(guān)的函數(shù)。實(shí)參是一個(gè)對(duì)象和一個(gè)字符串。該字符串必須是對(duì)象的某個(gè)屬性。如果對(duì)象允許,該函數(shù)將刪除指定的屬性。例如 delattr(x, ‘foobar’) 等價(jià)于 del x.foobar 。

dir([object])
如果沒(méi)有實(shí)參,則返回當(dāng)前本地作用域中的名稱列表。如果有實(shí)參,它會(huì)嘗試返回該對(duì)象的有效屬性列表。

如果對(duì)象有一個(gè)名為?dir() 的方法,那么該方法將被調(diào)用,并且必須返回一個(gè)屬性列表。這允許實(shí)現(xiàn)自定義?getattr() 或?getattribute() 函數(shù)的對(duì)象能夠自定義 dir() 來(lái)報(bào)告它們的屬性。

如果對(duì)象不提供?dir(),這個(gè)函數(shù)會(huì)嘗試從對(duì)象已定義的?dict?屬性和類型對(duì)象收集信息。結(jié)果列表并不總是完整的,如果對(duì)象有自定義?getattr(),那結(jié)果可能不準(zhǔn)確。

默認(rèn)的 dir() 機(jī)制對(duì)不同類型的對(duì)象行為不同,它會(huì)試圖返回最相關(guān)而不是最全的信息:

如果對(duì)象是模塊對(duì)象,則列表包含模塊的屬性名稱。

如果對(duì)象是類型或類對(duì)象,則列表包含它們的屬性名稱,并且遞歸查找所有基類的屬性。

否則,列表包含對(duì)象的屬性名稱,它的類屬性名稱,并且遞歸查找它的類的所有基類的屬性。

返回的列表按字母表排序。

getattr(object, name[, default])
返回對(duì)象命名屬性的值。name 必須是字符串。如果該字符串是對(duì)象的屬性之一,則返回該屬性的值。例如, getattr(x, ‘foobar’) 等同于 x.foobar。如果指定的屬性不存在,且提供了 default 值,則返回它,否則觸發(fā) AttributeError。

setattr(object, name, value)
它是getattr()的對(duì)應(yīng)函數(shù)。實(shí)參是對(duì)象,字符串和任意值。字符串可能是已存在或新增屬性的名稱。該函數(shù)把value賦值給屬性。例如,setattr(x, "foobar", 123)相當(dāng)于x.foobar = 123

hasattr(object, name)
該實(shí)參是一個(gè)對(duì)象和一個(gè)字符串。如果字符串是對(duì)象的屬性之一的名稱,則返回 True,否則返回 False。(此功能是通過(guò)調(diào)用 getattr(object, name) 看是否有 AttributeError 異常來(lái)實(shí)現(xiàn)的。)

hash(object)
返回該對(duì)象的哈希值(如果它有的話)。哈希值是整數(shù)。它們?cè)谧值洳檎以貢r(shí)用來(lái)快速比較字典的鍵。相同大小的數(shù)字變量有相同的哈希值(即使它們類型不同,如 1 和 1.0)。

注釋: 如果對(duì)象實(shí)現(xiàn)了自己的?hash() 方法,請(qǐng)注意,hash() 根據(jù)機(jī)器的字長(zhǎng)來(lái)截?cái)喾祷刂?。另?qǐng)參閱?hash()。

id(object)
返回對(duì)象的“標(biāo)識(shí)值”。該值是一個(gè)整數(shù),在此對(duì)象的生命周期中保證是唯一且恒定的。兩個(gè)生命期不重疊的對(duì)象可能具有相同的 id() 值。

isinstance(object, classinfo)
如果 object 實(shí)參是 classinfo 實(shí)參的實(shí)例,或者是(直接、間接或 虛擬)子類的實(shí)例,則返回 true。如果 object 不是給定類型的對(duì)象,函數(shù)始終返回 false。如果 classinfo 是對(duì)象類型(或多個(gè)遞歸元組)的元組,如果 object 是其中的任何一個(gè)的實(shí)例則返回 true。 如果 classinfo 既不是類型,也不是類型元組或類型的遞歸元組,那么會(huì)觸發(fā) TypeError 異常。

len(s)
返回對(duì)象的長(zhǎng)度(元素個(gè)數(shù))。實(shí)參可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)。

vars([object])

返回具有dict屬性的模塊,類,實(shí)例或任何其他對(duì)象的dict屬性。

模塊和實(shí)例等對(duì)象具有可更新的dict屬性; 但是,其他對(duì)象可能對(duì)其dict屬性具有寫(xiě)入限制(例如,類使用types.MappingProxyType來(lái)防止直接字典更新)。

沒(méi)有參數(shù),vars()就像locals()一樣。 請(qǐng)注意,locals字典僅對(duì)讀取有用,因?yàn)楹雎粤藢?duì)locals字典的更新。

總結(jié)

Python的內(nèi)置函數(shù)提供了常用的功能,熟練使用這些內(nèi)置函數(shù)對(duì)編程有很大幫助。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/43801.html

相關(guān)文章

  • Python爬蟲(chóng)學(xué)習(xí)路線

    摘要:以下這些項(xiàng)目,你拿來(lái)學(xué)習(xí)學(xué)習(xí)練練手。當(dāng)你每個(gè)步驟都能做到很優(yōu)秀的時(shí)候,你應(yīng)該考慮如何組合這四個(gè)步驟,使你的爬蟲(chóng)達(dá)到效率最高,也就是所謂的爬蟲(chóng)策略問(wèn)題,爬蟲(chóng)策略學(xué)習(xí)不是一朝一夕的事情,建議多看看一些比較優(yōu)秀的爬蟲(chóng)的設(shè)計(jì)方案,比如說(shuō)。 (一)如何學(xué)習(xí)Python 學(xué)習(xí)Python大致可以分為以下幾個(gè)階段: 1.剛上手的時(shí)候肯定是先過(guò)一遍Python最基本的知識(shí),比如說(shuō):變量、數(shù)據(jù)結(jié)構(gòu)、語(yǔ)法...

    liaoyg8023 評(píng)論0 收藏0
  • python基礎(chǔ)教程:作用域和命名空間

    摘要:正如我們前面舉的張三的例子那樣,不同命名空間中的名稱之間沒(méi)有任何關(guān)系。作用域作用域,是一個(gè)命名空間可直接發(fā)放完的代碼的文本區(qū)域。刪除也是如此,語(yǔ)句會(huì)從局部命名空間的引用中移除對(duì)的綁定。 命名空間和作用域的概念我們之前也提到過(guò),比如內(nèi)置函數(shù)globals(),函數(shù)中變量的作用域,模塊使用的import等等。這些可能讓我們對(duì)這兩個(gè)概念有了大致的理解。本節(jié)再詳細(xì)探討一下。 showImg(h...

    wangzy2019 評(píng)論0 收藏0
  • python基礎(chǔ)教程:流程控制之for循環(huán)

    摘要:在中,并不是一個(gè)內(nèi)置函數(shù),而是一個(gè)類型,但是在中它是一個(gè)內(nèi)置函數(shù)上面是中從看到的的說(shuō)明,它的是,而不像內(nèi)置函數(shù)的是。雖然的類型從中的內(nèi)置函數(shù)變成了中的,但并不影響我們對(duì)它的使用。 循環(huán)是計(jì)算機(jī)程序中經(jīng)常用到的流程。試想一下,如果我們有一萬(wàn)個(gè)數(shù)據(jù)要處理,每個(gè)數(shù)據(jù)處理的流程都一模一樣,如果我們用順序流程就要把處理流程重復(fù)寫(xiě)一萬(wàn)遍,是不是很累?而用for循環(huán)就簡(jiǎn)單多了。 showImg(ht...

    CoderBear 評(píng)論0 收藏0
  • python基礎(chǔ)教程內(nèi)置函數(shù)(一)

    摘要:我們把這些內(nèi)置函數(shù)類型分成幾類進(jìn)行介紹。實(shí)參的合法范圍是到進(jìn)制表示是。產(chǎn)生一個(gè)將應(yīng)用于迭代器中所有元素并返回結(jié)果的迭代器。內(nèi)置的函數(shù)保證穩(wěn)定。 Python解釋器內(nèi)置了很多函數(shù)和類型,可以隨時(shí)隨地在編程中使用。其實(shí),我們?cè)谇懊娴膶W(xué)習(xí)中已經(jīng)接觸過(guò)好多內(nèi)置函數(shù)。 showImg(https://segmentfault.com/img/remote/1460000019177948); 這...

    snifes 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

xiaodao

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<