【Python研發】學些Python術語
Python視頻教程看的多了,會發現有很多高端的Python術語,每項都是Python的技術點。文章中已劃重點,更多詳細內容點擊左下角閱讀官網文檔。
abstract base class
一個不能被實例化,只能被子類化的類。Python中的介面由 ABC 形式化表示。除了可以繼承一個ABC外,類也可以通過註冊成一個ABC的虛擬子類來聲明實現了某個介面。
argument
實參,指調用一個函數時,所傳遞的一個表達式。在Python中,argument和parameter幾乎就是同義詞。關於這兩個術語的區別和使用方法的更多信息,見術語 parameter。
attribute
屬性,方法和數據屬性(如Java術語中的 「fields」 等)在Python中都被稱作屬性。方法也是一個屬性,只不過這個屬性恰好是一個可調用對象(通常是一個函數,但不是必須的)。
class
類,一種用於定義新類型的程序結構,它具有數據屬性和可在其上進行某些操作的方法。見 type 術語。
context manager
上下文管理器,一個實現了 __enter__和__exit__這兩個特殊方法的對象,用於with塊中。
CPython
標準 Python 解析器,用C實現。該術語只在以下情況下使用:討論特定於某種實現的特性時,或討論PyPy等有多種可用 Python 解析器時。
decorator
裝飾器,一個可調用對象A,調用能返回另一個可調用對象B,對A的調用要在一個可調用對象C的定義體前使用語法@A進行。當碰到這種代碼時,Python解析器調用A(C)並將結果B綁定到之前分配給C的變數,從而事實上將C的定義替換成了B。如果該目標可調用對象C是一個函數,那麼A就是一個函數裝飾器,如果C是一個類,那麼A就是一個類裝飾器。
descriptor
描述符,一個實現了__get__, __set__, __delete__這三個特殊方法中的一個或多個方法的類,當它的一個實例成為了另一個類(即managed class,受管理類) 的類屬性時,即成為一個descriptor(描述子)。描述子對受管理類中的受管理屬性的存取和刪除操作進行管理,並通常將數據保存到managed instance(受管理實例)中。
docstring
即 documentation string 的簡寫。當一個模塊、類或函數中的首行語句是一個字元串時,Python 會將該字元串作為該對象的 docstring,並保存到該對象的doc屬性上。見 doctest 術語。
duck-typing
多態的一種形式: 函數可作用於任何實現了特定方法的對象上,而不需要考慮它們的類或者顯式介面聲明。
file-like object
在官方文檔中非正式地用於表述實現了文件協議的對象,這些對象都有像read, write, close等方法。常見的變體有: 包含已編碼字元串以便於面向行讀寫的文本文件,StringIO實例–內存中的文本文件和包含未編碼位元組數據的二進位文件。後者可能有緩衝,也可能沒有。標準文件類型自 Python 2.6 開始都定義在io模塊中。
function
函數,嚴格來說,是一個從def塊或lambda表達式運行而來的對象。非正式地,function這個詞用於描述任何可調用對象,如方法、甚至有時也可以是類。官方的內置函數列表中也含有一些內置類,像dict, range和str等。
generator
生成器,一個由generator function(生成器函數) 或generator expression(生成器表達式) 構建的迭代器,它在產生值時無需遍歷整個集合; 典型的例子是一個產生Fibonacci序列的生成器,由於該序列是無限的,因而不適合在存於一個集合中。該術語除了表述從生成器函數調用中返回的對象外,有時也用於表述該生成器函數本身。
generator expression
生成器表達式,一種由括弧包圍的表達式,它使用和list comprehension(列表推導式) 相同的語法,只不過它返回的不是列表,而是一個生成器。一個generator expression(生成器表達式) 可以被理解成列表推導式的 lazy 版本。
generator iterator
生成器迭代器,一個在函數體中使用了 yeild 關鍵字的函數。當被調用時,generator function (生成器函數) 會返回一個 generator (生成器)。
generic function
指一組函數:它們意在以可定製的方式為不同的對象類型實現相同的操作。在 Python 3.4 中,functools.singledispatch裝飾器是創建generic function(通用函數) 的標準方法。在其它語言中也叫做multimethods。
hashable
可散列的, 一個對象為 hashable 即指它同時含有__hash__和__eq__方法,並且有以下限制: 它的哈希值永遠不會變且當a == b成立時hash(a) == hash(b)也必須為True。大多數內置的不可修改類型都是hashable的,但是元組只有當其每個元素都hashable時才是hashable的。
immutable
不可變類型
iterable
可迭代的,任何一個只要通過 iter 這個內置函數能獲取一個iterator(迭代器) 的對象。iterable object(可迭代對象) 可作為for循環、推導式和元組拆分時的元素源。那些實現了__iter__方法並返回一個迭代器的對象都是iterable的,而其它實現了 __getitem__方法的對象可能也是iterable的。
iterator
迭代器,任何一個實現了__next__方法的的對象,__next__不接收參數,調用它時會返回序列中的下一個元素,或者當序列中已無元素時會拋出StopIteration異常。Python的iterator(迭代器) 也會實現__iter__方法,因而它們也是iterable的。經典的迭代器,根據原來的設計模式,是從集合中返回元素。generator(生成器) 也是一個迭代器,但是它更加靈活。見術語 generator。
list comprehension
列表推導,一種由方括弧包圍的表達式: 它使用for和in關鍵字,並對來自一個或多個可迭代對象中的元素進行處理和過濾,從而創建出一個列表。list comprehension (列表推導式) 是即時計算的。
mutable
可變類型
parameter
形參,函數會聲明成具有0到多個 「形式參數」,它們都是未綁定的本地變數。當函數被調用時,傳遞的參數或 「實參」 會綁定到這些變數。通常,arguemnt指實參,而parameter指形參,但是Python文檔和API中這兩者都是混用的。見術語 argument。
Pythonic
用於稱讚符合語言習慣的Python代碼,這些代碼很好地利用了語言特性,從而顯得簡潔、易讀,通常也更快。也用於表述API,這些API使得熟練的Python程序員使用它們進行編程時顯得很自然。
slice
切片,通過使用切片表示法來生產某個序列的子集,比如my_sequence[2:6]。Slicing (切片) 通常是通過複製數據來創建一個新的對象; 特別如my_sequence[:] 會創建整個序列的一個shallow copy(淺複製版本)。而一個memoryview對象通過切片生成的新memoryview對象能與源對象共享數據。
special method
特殊方法,具有特殊名字的方法,如__getitem__,它的開頭和結尾都有雙下劃線。
type
類型,它表述有關程序數據的每個特定類別,它通過一組可能值及可運用於其上的操作來定義。有些Python type(類型) 與機器數據類型很接近 (如float和bytes),而其它的會有相應的擴展 (如int不受限於CPU的字大小,str能保存多位元組的Unicode數據點),同時還有很高級的抽象類型 (如dict, deque等)。類型可以是用戶自定義的,也可以是內置於解析器中的 (一個 「內置」 類型)。在Python 2.2之前,type/class還沒有統一起來,那時type和class是不同的實體,用戶自定義的類無法對內置的類型進行擴展。而自Python 2.2 後,內置類型和新型的類開始變得相互兼容,class (類) 成為了type (類型) 的一個實例。而在Python 3中,所有類都是新型類。見class和metaclass。
Zen of Python
Python之禪,在Python 2.2版本之後的任何Python終端中輸入import this即可顯示。
※30分鐘純手寫2048小遊戲
※十五分鐘讓你了解Python套路
※開始Python的數據結構
※一個不簡單的非同步爬蟲小程序
TAG:Python |