Python-基礎-經常使用術語對照表


下面內容主要摘抄自python 官網,https://docs.python.org/3.7/glossary.html#glossary,部份內容有刪減。html

2to3

一個將 Python 2.x 代碼轉換爲 Python 3.x 代碼的工具,可以處理大部分經過解析源碼並遍歷解析樹可檢測到的不兼容問題。python

2to3 包含在標準庫中,模塊名爲 lib2to3;並提供一個獨立入口點 Tools/scripts/2to3。參見 2to3 - 自動將 Python 2 代碼轉爲 Python 3 代碼。程序員

由於官方將在2020年再也不支持 Python 2.x, 在遇到沒有Python 2.X 版本 的code 的時候,能夠嘗試使用這個工具將代碼轉化成Python 的版本。express

abstract base class -- 抽象基類

抽象基類簡稱 ABC,是對 duck-typing 的補充,它提供了一種定義接口的新方式,相比之下其餘技巧例如 hasattr() 顯得過於笨拙或有微妙錯誤(例如使用 魔術方法)。ABC 引入了虛擬子類,這種類並不是繼承自其餘類,但卻仍能被 isinstance() 和 issubclass() 所承認;詳見 abc 模塊文檔。Python 自帶許多內置的 ABC 用於實現數據結構(在 collections.abc 模塊中)、數字(在 numbers 模塊中)、流(在 io 模塊中)、導入查找器和加載器(在 importlib.abc 模塊中)。你可使用 abc 模塊來建立本身的 ABC。編程

argument -- 參數

在調用函數時傳給 function (或 method )的值。參數分爲兩種:數組

  • 關鍵字參數: 在函數調用中前面帶有標識符(例如 name=)或者做爲包含在前面帶有 ** 的字典裏的值傳入。
    舉例來講,3 和 5 在如下對 complex() 的調用中均屬於關鍵字參數:緩存

    complex(real=3, imag=5)
    complex(**{'real': 3, 'imag': 5})
  • 位置參數: 不屬於關鍵字參數的參數。位置參數可出現於參數列表的開頭以及/或者做爲前面帶有 * 的 iterable 裏的元素被傳入。
    舉例來講,3 和 5 在如下調用中均屬於位置參數:安全

    complex(3, 5)
    complex(*(3, 5))

參數會被賦值給函數體中對應的局部變量。有關賦值規則參見 調用 一節。根據語法,任何表達式均可用來表示一個參數;最終算出的值會被賦給對應的局部變量。數據結構

另參見 parameter 術語表條目,常見問題中 參數與形參的區別 以及 PEP 362。多線程

asynchronous context manager -- 異步上下文管理器

此種對象經過定義 __aenter__() 和 __aexit__() 方法來對 async with 語句中的環境進行控制。由 PEP 492 引入。

asynchronous generator -- 異步生成器

返回值爲 asynchronous generator iterator 的函數。它與使用 async def 定義的協程函數很類似,不一樣之處在於它包含 yield 表達式以產生一系列可在 async for 循環中使用的值。

此術語一般是指異步生成器函數,但在某些狀況下則多是指 異步生成器迭代器。若是須要清楚表達具體含義,請使用全稱以免歧義。

一個異步生成器函數可能包含 await 表達式或者 async for 以及 async with 語句。

attribute -- 屬性

關聯到一個對象的值,可使用點號表達式經過其名稱來引用。例如,若是一個對象 o 具備一個屬性 a,就能夠用 o.a 來引用它。

BDFL

「終身仁慈獨裁者」的英文縮寫,即 Guido van Rossum,Python 的創造者。

binary file -- 二進制文件

file object 可以讀寫 字節類對象。二進制文件的例子包括以二進制模式('rb', 'wb' or 'rb+')打開的文件、sys.stdin.buffer、sys.stdout.buffer 以及 io.BytesIO 和 gzip.GzipFile 的實例。

另請參見 text file 瞭解可以讀寫 str 對象的文件對象。

bytes-like object -- 字節類對象

支持 緩衝協議 而且能導出 C-contiguous 緩衝的對象。這包括全部 bytes、bytearray 和 array.array 對象,以及許多普通 memoryview 對象。字節類對象可在多種二進制數據操做中使用;這些操做包括壓縮、保存爲二進制文件以及經過套接字發送等。

某些操做須要可變的二進制數據。這種對象在文檔中常被稱爲「可讀寫字節類對象」。可變緩衝對象的例子包括 bytearray 以及 bytearray 的 memoryview。其餘操做要求二進制數據存放於不可變對象 ("只讀字節類對象");這種對象的例子包括 bytes 以及 bytes 對象的 memoryview。

bytecode -- 字節碼

Python 源代碼會被編譯爲字節碼,即 CPython 解釋器中表示 Python 程序的內部代碼。字節碼還會緩存在 .pyc 文件中,這樣第二次執行同一文件時速度更快(能夠免去將源碼從新編譯爲字節碼)。這種 "中間語言" 運行在根據字節碼執行相應機器碼的 virtual machine 之上。請注意不一樣 Python 虛擬機上的字節碼不必定通用,也不必定能在不一樣 Python 版本上兼容。

class -- 類

用來建立用戶定義對象的模板。類定義一般包含對該類的實例進行操做的方法定義。

class variable -- 類變量

在類中定義的變量,而且僅限在類的層級上修改 (而不是在類的實例中修改)。

coercion -- 強制類型轉換

在包含兩個相同類型參數的操做中,一種類型的實例隱式地轉換爲另外一種類型。例如,int(3.15) 是將原浮點數轉換爲整型數 3,但在 3+4.5 中,參數的類型不一致(一個是 int, 一個是 float),二者必須轉換爲相同類型才能相加,不然將引起 TypeError。若是沒有強制類型轉換機制,程序員必須將全部可兼容參數歸一化爲相同類型,例如要寫成 float(3)+4.5 而不是 3+4.5。

coroutine -- 協程
協程是子例程的更通常形式。子例程能夠在某一點進入並在另外一點退出。協程則能夠在許多不一樣的點上進入、退出和恢復。它們可經過 async def 語句來實現。參見 PEP 492。

coroutine function -- 協程函數
返回一個 coroutine 對象的函數。協程函數可經過 async def 語句來定義,並可能包含 await、async for 和 async with 關鍵字。這些特性是由 PEP 492 引入的。

CPython

Python 編程語言的規範實現,在 python.org 上發佈。CPython 一詞用於在必要時將此實現與其餘實現例如 JythonIronPython 相區別。

decorator -- 裝飾器

返回值爲另外一個函數的函數,一般使用 @wrapper 語法形式來進行函數變換。 裝飾器的常見例子包括 classmethod() 和 staticmethod()。

裝飾器語法只是一種語法糖,如下兩個函數定義在語義上徹底等價:

def f(...):
    ...
f = staticmethod(f)

@staticmethod
def f(...):
    ...

同的樣概念也適用於類,但一般較少這樣使用。有關裝飾器的詳情可參見 函數定義 和 類定義 的文檔。

dictionary -- 字典

一個關聯數組,其中的任意鍵都映射到相應的值。鍵能夠是任何具備 __hash__() 和 __eq__() 方法的對象。在 Perl 語言中稱爲 hash。

EAFP

「求原諒比求許可更容易」的英文縮寫。這種 Python 經常使用代碼編寫風格會假定所需的鍵或屬性存在,並在假定錯誤時捕獲異常。這種簡潔快速風格的特色就是大量運用 try 和 except 語句。於其相對的則是所謂 LBYL 風格,常見於 C 等許多其餘語言。

expression -- 表達式

能夠求出某個值的語法單元。 換句話說,一個表達式就是表達元素例如字面值、名稱、屬性訪問、運算符或函數調用的彙總,它們最終都會返回一個值。 與許多其餘語言不一樣,並不是全部語言構件都是表達式。 還存在不能被用做表達式的 statement,例如 while。 賦值也是屬於語句而非表達式。

extension module -- 擴展模塊
以 C 或 C++ 編寫的模塊,使用 Python 的 C API 來與語言核心以及用戶代碼進行交互。

file object -- 文件對象

對外提供面向文件 API 以使用下層資源的對象(帶有 read() 或 write() 這樣的方法)。
根據其建立方式的不一樣,文件對象能夠處理對真實磁盤文件,對其餘類型存儲,或是對通信設備的訪問(例如標準輸入/輸出、內存緩衝區、套接字、管道等等)。
文件對象也被稱爲 文件類對象

實際上共有三種類別的文件對象: 原始二進制文件, 緩衝二進制文件 以及 文本文件。它們的接口定義均在 io 模塊中。
建立文件對象的規範方式是使用 open() 函數。

floor division -- 向下取整除法

向下舍入到最接近的整數的數學除法。向下取整除法的運算符是 // 。例如,表達式 11 // 4 的計算結果是 2 ,而與之相反的是浮點數的真正除法返回 2.75 。注意 (-11) // 4 會返回 -3 由於這是 -2.75 向下 舍入獲得的結果。見 PEP 238 。

function -- 函數

能夠向調用者返回某個值的一組語句。還能夠向其傳入零個或多個 參數 並在函數體執行中被使用。另見 parameter, method 和 函數定義 等節。

future

一種僞模塊,可被程序員用來啓用與當前解釋器不兼容的新語言特性。

經過導入 future 模塊並對其中的變量求值,你能夠查看新特性什麼時候首次加入語言以及什麼時候成爲默認:

>>>
>>> import __future__
>>> __future__.division
_Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)

garbage collection -- 垃圾回收

釋放再也不被使用的內存空間的過程。
Python 是經過引用計數和一個可以檢測和打破循環引用的循環垃圾回收器來執行垃圾回收的。
可使用 gc 模塊來控制垃圾回收器。

global interpreter lock -- 全局解釋器鎖

CPython 解釋器所採用的一種機制,它確保同一時刻只有一個線程在執行 Python bytecode。此機制經過設置對象模型(包括 dict 等重要內置類型)針對併發訪問的隱式安全簡化了 CPython 實現。給整個解釋器加鎖使得解釋器多線程運行更方便,其代價則是犧牲了在多處理器上的並行性。

不過,某些標準庫或第三方庫的擴展模塊被設計爲在執行計算密集型任務如壓縮或哈希時釋放 GIL。此外,在執行 I/O 操做時也老是會釋放 GIL。

建立一個(以更精細粒度來鎖定共享數據的)「自由線程」解釋器的努力從未得到成功,由於這會犧牲在普通單處理器狀況下的性能。據信克服這種性能問題的措施將致使實現變得更復雜,從而更難以維護。

IDLE

Python 的 IDE,「集成開發與學習環境」的英文縮寫。是 Python 標準發行版附帶的基本編程器和解釋器環境。

import path -- 導入路徑

由多個位置(或 路徑條目)組成的列表,會被模塊的 path based finder 用來查找導入目標。在導入時,此位置列表一般來自 sys.path,但對次級包來講也可能來自上級包的 path 屬性。

iterable -- 可迭代對象

可以逐一返回其成員項的對象。可迭代對象的例子包括全部序列類型(例如 list、str 和 tuple)以及某些非序列類型例如 dict、文件對象 以及定義了 __iter__() 方法或是實現了 Sequence 語義的 __getitem__() 方法的任意自定義類對象。

可迭代對象被可用於 for 循環以及許多其餘須要一個序列的地方(zip()、map() ...)。當一個可迭代對象做爲參數傳給內置函數 iter() 時,它會返回該對象的迭代器。這種迭代器適用於對值集合的一次性遍歷。在使用可迭代對象時,你一般不須要調用 iter() 或者本身處理迭代器對象。for 語句會爲你自動處理那些操做,建立一個臨時的未命名變量用來在循環期間保存迭代器。參見 iterator、sequence 以及 generator。

iterator -- 迭代器

用來表示一連串數據流的對象。重複調用迭代器的 __next__() 方法(或將其傳給內置函數 next())將逐個返回流中的項。當沒有數據可用時則將引起 StopIteration 異常。到這時迭代器對象中的數據項已耗盡,繼續調用其 __next__() 方法只會再次引起 StopIteration 異常。迭代器必須具備 __iter__() 方法用來返回該迭代器對象自身,所以迭代器一定也是可迭代對象,可被用於其餘可迭代對象適用的大部分場合。一個顯著的例外是那些會屢次重複訪問迭代項的代碼。容器對象(例如 list)在你每次向其傳入 iter() 函數或是在 for 循環中使用它時都會產生一個新的迭代器。若是在此狀況下你嘗試用迭代器則會返回在以前迭代過程當中被耗盡的同一迭代器對象,使其看起來就像是一個空容器。

lambda

由一個單獨 expression 構成的匿名內聯函數,表達式會在調用時被求值。
建立 lambda 函數的句法爲 lambda [parameters]: expression

list -- 列表

Python 內置的一種 sequence。雖然名爲列表,但更相似於其餘語言中的數組而非連接列表,由於訪問元素的時間複雜度爲 O(1)。

mapping -- 映射

一種支持任意鍵查找並實現了 Mapping 或 MutableMapping 抽象基類 中所規定方法的容器對象。
此類對象的例子包括 dict, collections.defaultdict, collections.OrderedDict 以及 collections.Counter

metaclass -- 元類

一種用於建立類的類。類定義包含類名、類字典和基類列表。元類負責接受上述三個參數並建立相應的類。大部分面向對象的編程語言都會提供一個默認實現。Python 的特別之處在於能夠建立自定義元類。大部分用戶永遠不須要這個工具,但當須要出現時,元類可提供強大而優雅的解決方案。它們已被用於記錄屬性訪問日誌、添加線程安全性、跟蹤對象建立、實現單例,以及其餘許多任務。

method -- 方法

在類內部定義的函數。若是做爲該類的實例的一個屬性來調用,方法將會獲取實例對象做爲其第一個 argument (一般命名爲 self)。參見 function

module -- 模塊

此對象是 Python 代碼的一種組織單位。各模塊具備獨立的命名空間,可包含任意 Python 對象。模塊可經過 importing 操做被加載到 Python 中。

另見 package。

namespace -- 命名空間

命名空間是存放變量的場所。命名空間有局部、全局和內置的,還有對象中的嵌套命名空間(在方法以內)。
命名空間經過防止命名衝突來支持模塊化。例如,函數 builtins.openos.open() 可經過各自的命名空間來區分。命名空間還經過明確哪一個模塊實現那個函數來幫助提升可讀性和可維護性。
例如,`random.seed() 或 itertools.islice()` 這種寫法明確了這些函數是由 random 與 itertools 模塊分別實現的。

namespace package -- 命名空間包

PEP 420 所引入的一種僅被用做子包的容器的 package,命名空間包能夠沒有實體表示物,其描述方式與 regular package 不一樣,由於它們沒有 __init__.py 文件。

另可參見 module。

object -- 對象

任何具備狀態(屬性或值)以及預約義行爲(方法)的數據。object 也是任何 new-style class 的最頂層基類名。

package -- 包

一種可包含子模塊或遞歸地包含子包的 Python module。從技術上說,包是帶有 path 屬性的 Python 模塊。

另參見 regular package 和 namespace package。

parameter -- 形參

function (或方法)定義中的命名實體,它指定函數能夠接受的一個 argument (或在某些狀況下,多個實參)。有五種形參:

  • positional-or-keyword:位置或關鍵字,指定一個能夠做爲 位置參數 傳入也能夠做爲 關鍵字參數 傳入的實參。
    這是默認的形參類型,例以下面的 foo 和 bar:

    def func(foo, bar=None): ...
  • positional-only:僅限位置,指定一個只能按位置傳入的參數。Python 中沒有定義僅限位置形參的語法。可是一些內置函數有僅限位置形參(好比 abs())。
  • keyword-only:僅限關鍵字,指定一個只能經過關鍵字傳入的參數。

僅限關鍵字形參可經過在函數定義的形參列表中包含單個可變位置形參或者在多個可變位置形參以前放一個 * 來定義,例以下面的 kw_only1 和 kw_only2:

def func(arg, *, kw_only1, kw_only2): ...
  • var-positional:可變位置,指定能夠提供由一個任意數量的位置參數構成的序列(附加在其餘形參已接受的位置參數以後)。這種形參可經過在形參名稱前加綴 * 來定義。

例以下面的 args:

def func(*args, **kwargs): ...
  • var-keyword:可變關鍵字,指定能夠提供任意數量的關鍵字參數(附加在其餘形參已接受的關鍵字參數以後)。這種形參可經過在形參名稱前加綴 ** 來定義,例如上面的 kwargs。

形參能夠同時指定可選和必選參數,也能夠爲某些可選參數指定默認值。

path entry -- 路徑入口

import path 中的一個單獨位置,會被 path based finder 用來查找要導入的模塊。

PEP

Python 加強提議」的英文縮寫。
一個 PEP 就是一份設計文檔,用來向 Python 社區提供信息,或描述一個 Python 的新增特性及其進度或環境。PEP 應當提供精確的技術規格和所提議特性的原理說明。

PEP 應被做爲提出主要新特性建議、收集社區對特定問題反饋以及爲必須加入 Python 的設計決策編寫文檔的首選機制。PEP 的做者有責任在社區內部創建共識,並應將不一樣意見也記入文檔。

參見 PEP 1。

sequence -- 序列

一種 iterable,它支持經過 __getitem__() 特殊方法來使用整數索引進行高效的元素訪問,並定義了一個返回序列長度的 __len__() 方法。
內置的序列類型有 list、str、tuple 和 bytes。注意雖然 dict 也支持 __getitem__()__len__(),但它被認爲屬於映射而非序列,由於它查找時使用任意的 immutable 鍵而非整數。

collections.abc.Sequence 抽象基類定義了一個更豐富的接口,它超越了 __getitem__() __len__(),添加了 count(), index(), __contains__()__reversed__() 。 可使用 register() 顯式註冊實現此擴展接口的類型。

slice -- 切片

一般只包含了特定 sequence 的一部分的對象。
切片是經過使用下標標記來建立的,在 [] 中給出幾個以冒號分隔的數字,例如 variable_name[1:3:5]。方括號(下標)標記在內部使用 slice 對象。

statement -- 語句

語句是程序段(一個代碼「塊」)的組成單位。
一條語句能夠是一個 expression 或某個帶有關鍵字的結構,例如 if、while 或 for。

text encoding -- 文本編碼

用於將Unicode字符串編碼爲字節串的編碼器。

type -- 類型

類型決定一個 Python 對象屬於什麼種類;每一個對象都具備一種類型。
要知道對象的類型,能夠訪問它的 __class__ 屬性,或是經過 type(obj) 來獲取。

type hint -- 類型提示
annotation 爲變量、類屬性、函數的形參或返回值指定預期的類型。

類型提示屬於可選項,Python 不要求提供,但其可對靜態類型分析工具起做用,並可協助 IDE 實現代碼補全與重構。

全局變量、類屬性和函數的類型提示可使用 typing.get_type_hints() 來訪問,但局部變量則不能夠。

參見 typing 和 PEP 484,其中有對此功能的詳細描述。

universal newlines -- 通用換行

一種解讀文本流的方式,將如下全部符號都識別爲行結束標誌:Unix 的行結束約定 'n'、Windows 的約定 'rn' 以及舊版 Macintosh 的約定 'r'。
參見 PEP 278 和 PEP 3116 和 bytes.splitlines() 瞭解更多用法說明。

virtual machine -- 虛擬機

一臺徹底經過軟件定義的計算機。
Python 虛擬機可執行字節碼編譯器所生成的 bytecode。

Zen of Python -- Python 之禪

列出 Python 設計的原則與哲學,有助於理解與使用這種語言。
定義在PEP 8 中。
每一個版本的具體內容,可能會有差。查看當前版本的具體內容可在交互模式提示符中輸入 "import this"。

本文由博客一文多發平臺 OpenWrite 發佈!
相關文章
相關標籤/搜索