上一篇文章: Python標準庫---一、內置函數(A-B-C)
下一篇文章: Python標準庫---三、內置函數(G-H-I-J-K)
setattr() 相關的函數。實參是一個對象和一個字符串。該字符串必須是對象的某個屬性。若是對象容許,該函數將刪除指定的屬性。例如 delattr(x, 'foobar') 等價於 del x.foobar 。
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)express
建立一個新的字典。dict 對象是一個字典類。參見 dict 和 映射類型 --- dict 瞭解這個類。
其餘容器類型,請參見內置的 list、set 和 tuple 類,以及 collections 模塊。
若是沒有實參,則返回當前本地做用域中的名稱列表。若是有實參,它會嘗試返回該對象的有效屬性列表。若是對象有一個名爲 __dir__() 的方法,那麼該方法將被調用,而且必須返回一個屬性列表。這容許實現自定義 __getattr__() 或 __getattribute__() 函數的對象可以自定義 dir() 來報告它們的屬性。segmentfault
若是對象不提供 dir__(),這個函數會嘗試從對象已定義的 __dict 屬性和類型對象收集信息。結果列表並不老是完整的,若是對象有自定義 __getattr__(),那結果可能不許確。安全
默認的 dir() 機制對不一樣類型的對象行爲不一樣,它會試圖返回最相關而不是最全的信息:app
若是對象是模塊對象,則列表包含模塊的屬性名稱。函數
若是對象是類型或類對象,則列表包含它們的屬性名稱,而且遞歸查找全部基類的屬性。ui
不然,列表包含對象的屬性名稱,它的類屬性名稱,而且遞歸查找它的類的全部基類的屬性。spa
返回的列表按字母表排序。例如:code
>>> import struct # show the names in the module namespace # doctest: +SKIP >>> dir() ['__builtins__', '__name__', 'struct'] # show the names in the struct module # doctest: +SKIP >>> dir(struct) ['Struct', '__all__', '__builtins__', '__cached__', '__doc__', '__file__', '__initializing__', '__loader__', '__name__', '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into', 'unpack', 'unpack_from'] >>> class Shape: ... def __dir__(self): ... return ['area', 'perimeter', 'location'] >>> s = Shape() >>> dir(s) ['area', 'location', 'perimeter']
註解 由於 dir() 主要是爲了便於在交互式時使用,因此它會試圖返回人們感興趣的名字集合,而不是試圖保證結果的嚴格性或一致性,它具體的行爲也可能在不一樣版本之間改變。例如,當實參是一個類時,metaclass 的屬性不包含在結果列表中。orm
它將兩個(非複數)數字做爲實參,並在執行整數除法時返回一對商和餘數。對於混合操做數類型,適用雙目算術運算符的規則。對於整數,結果和 (a // b, a % b) 一致。對於浮點數,結果是 (q, a % b) ,q 一般是 math.floor(a / b) 但可能會比 1 小。在任何狀況下, q * b + a % b 和 a 基本相等;若是 a % b 非零,它的符號和 b 同樣,而且 0 <= abs(a % b) < abs(b) 。
返回一個枚舉對象。iterable 必須是一個序列,或 iterator,或其餘支持迭代的對象。 enumerate() 返回的迭代器的 __next__() 方法返回一個元組,裏面包含一個計數值(從 start 開始,默認爲 0)和經過迭代 iterable 得到的值。
>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter'] >>> list(enumerate(seasons)) [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')] >>> list(enumerate(seasons, start=1)) [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
等價於:對象
def enumerate(sequence, start=0): n = start for elem in sequence: yield n, elem n += 1
實參是一個字符串,以及可選的 globals 和 locals。globals 實參必須是一個字典。locals 能夠是任何映射對象。expression 參數會做爲一個 Python 表達式(從技術上說是一個條件列表)被解析並求值,使用 globals 和 locals 字典做爲全局和局部命名空間。 若是 globals 字典存在且不包含以 builtins 爲鍵的值,則會在解析 expression 以前插入以此爲鍵的對內置模塊 builtins 的字典的引用。 這意味着 expression 一般具備對標準 builtins 模塊的徹底訪問權限且受限的環境會被傳播。 若是省略 locals 字典則其默認值爲 globals 字典。 若是兩個字典同時省略,表達式會在 eval() 被調用的環境中執行。 返回值爲表達式求值的結果。 語法錯誤將做爲異常被報告。 例如:
>>> x = 1 >>> eval('x+1') 2
這個函數也能夠用來執行任何代碼對象(如 compile() 建立的)。這種狀況下,參數是代碼對象,而不是字符串。若是編譯該對象時的 mode 實參是 'exec' 那麼 eval() 返回值爲 None 。提示: exec() 函數支持動態執行語句。 globals() 和 locals() 函數各自返回當前的全局和本地字典,所以您能夠將它們傳遞給 eval() 或 exec() 來使用。
另外能夠參閱 ast.literal_eval(),該函數能夠安全執行僅包含文字的表達式字符串。
這個函數支持動態執行 Python 代碼。object 必須是字符串或者代碼對象。若是是字符串,那麼該字符串將被解析爲一系列 Python 語句並執行(除非發生語法錯誤)。1 若是是代碼對象,它將被直接執行。在任何狀況下,被執行的代碼都須要和文件輸入同樣是有效的(見參考手冊中關於文件輸入的章節)。請注意即便在傳遞給 exec() 函數的代碼的上下文中,return 和 yield 語句也不能在函數定義以外使用。該函數返回值是 None 。不管哪一種狀況,若是省略了可選參數,代碼將在當前範圍內執行。若是提供了 globals 參數,就必須是字典類型,並且會被用做全局和本地變量。若是同時提供了 globals 和 locals 參數,它們分別被用做全局和本地變量。若是提供了 locals 參數,則它能夠是任何映射型的對象。請記住在模塊層級,全局和本地變量是相同的字典。若是 exec 有兩個不一樣的 globals 和 locals 對象,代碼就像嵌入在類定義中同樣執行。
若是 globals 字典不包含 builtins 鍵值,則將爲該鍵插入對內建 builtins 模塊字典的引用。所以,在將執行的代碼傳遞給 exec() 以前,能夠經過將本身的 builtins 字典插入到 globals 中來控制可使用哪些內置代碼。
註解 內置 globals() 和 locals() 函數各自返回當前的全局和本地字典,所以能夠將它們傳遞給 exec() 的第二個和第三個實參。
註解 默認狀況下,locals 的行爲以下面 locals() 函數描述的同樣:不要試圖改變默認的 locals 字典。若是您想在 exec() 函數返回時知道代碼對 locals 的變更,請明確地傳遞 locals 字典。
用 iterable 中函數 function 返回真的那些元素,構建一個新的迭代器。iterable 能夠是一個序列,一個支持迭代的容器,或一個迭代器。若是 function 是 None ,則會假設它是一個身份函數,即 iterable 中全部返回假的元素會被移除。請注意, filter(function, iterable) 至關於一個生成器表達式,當 function 不是 None 的時候爲 (item for item in iterable if function(item));function 是 None 的時候爲 (item for item in iterable if item) 。
請參閱 itertools.filterfalse() 瞭解,只有 function 返回 false 時才選取 iterable 中元素的補充函數。
返回從數字或字符串 x 生成的浮點數。若是實參是字符串,則它必須是包含十進制數字的字符串,字符串前面能夠有符號,以前也能夠有空格。可選的符號有 '+' 和 '-' ; '+' 對建立的值沒有影響。實參也能夠是 NaN(非數字)、正負無窮大的字符串。確切地說,除去首尾的空格後,輸入必須遵循如下語法:
sign ::= "+" | "-" infinity ::= "Infinity" | "inf" nan ::= "nan" numeric_value ::= floatnumber | infinity | nan numeric_string ::= [sign] numeric_value
這裏, floatnumber 是 Python 浮點數的字符串形式,詳見 浮點數字面值。字母大小寫均可以,例如,「inf」、「Inf」、「INFINITY」、「iNfINity」 均可以表示正無窮大。另外一方面,若是實參是整數或浮點數,則返回具備相同值(在 Python 浮點精度範圍內)的浮點數。若是實參在 Python 浮點精度範圍外,則會觸發 OverflowError。
對於通常的 Python 對象 x , float(x) 指派給 x.__float__() 。
若是沒有實參,則返回 0.0 。
例如:
>>> >>> float('+1.23') 1.23 >>> float(' -12345\n') -12345.0 >>> float('1e-003') 0.001 >>> float('+1E6') 1000000.0 >>> float('-Infinity') -inf
數字類型 --- int, float, complex 描述了浮點類型。在 3.6 版更改: 您可使用下劃線將代碼文字中的數字進行分組。
在 3.7 版更改: x 如今只能做爲位置參數。
將 value 轉換爲 format_spec 控制的「格式化」表示。format_spec 的解釋取決於 value 實參的類型,可是大多數內置類型使用標準格式化語法:格式規格迷你語言。默認的 format_spec 是一個空字符串,它一般和調用 str(value) 的結果相同。
調用 format(value, format_spec) 會轉換成 type(value).__format__(value, format_spec) ,因此實例字典中的 __format__() 方法將不會調用。若是搜索到 object 有這個方法但 format_spec 不爲空,format_spec 或返回值不是字符串,會觸發 TypeError 異常。
在 3.4 版更改: 當 format_spec 不是空字符串時, object().__format__(format_spec) 會觸發 TypeError。
返回一個新的 frozenset 對象,它包含可選參數 iterable 中的元素。 frozenset 是一個內置的類。有關此類的文檔,請參閱 frozenset 和 集合類型 --- set, frozenset。請參閱內建的 set、list、tuple 和 dict 類,以及 collections 模塊來了解其它的容器。
上一篇文章: Python標準庫---一、內置函數(A-B-C)
下一篇文章: Python標準庫---三、內置函數(G-H-I-J-K)