當前位置:
首頁 > 最新 > 那些神級程序員張口閉口都是專業術語!聽不懂怎麼辦?全部的術語

那些神級程序員張口閉口都是專業術語!聽不懂怎麼辦?全部的術語

Abstract base class(ABC)

一個不能被實例化,只能被子類化的類。Python 中的介面由 ABC 形式化表示。除了可以繼承一個 ABC 外,類也可以通過註冊成一個 ABC 的虛擬子類來聲明實現了某個介面。

accessor

一個實現了可用於訪問單個數據屬性的方法。一些開發者將 accessor 作為一個通用術語使用,即包含 getter 和 setter 方法,而另一些開發者使用時只表述 getter,setter 表述為 mutator。

aliasing

為相同的對象分配兩個或多個名字。例如,在 a = []; b = a 這個例子中,變數 a 和 b 都是同一個列表對象的別名。在任何一種變數用於存儲對象引用的語言中,別名會很自然地發生。為避免混淆,只需忘掉變數是保存對象的盒子這樣的想法(一個對象不能同時保存在兩個盒子中)。最好將它們理解成是貼在對象上的標籤(一個對象可以有多個標籤)。

argument

指調用一個函數時,所傳遞的一個表達式。在 Python 中,argument 和 parameter 幾乎就是同義詞。關於這兩個術語的區別和使用方法的更多信息,見術語 parameter。

attribute

方法和數據屬性(如 Java 術語中的 「fields」 等)在 Python 中都被稱作屬性。方法也是一個屬性,只不過這個屬性恰好是一個可調用對象(通常是一個函數,但不是必需的)。

BDFL

Benevolent Dictator For Life,是 Python 語言的創造者 Guido van Rossum 的別稱。

binary sequence

一個用於表述含有位元組元素的序列化類型的通用術語。內置的二進位序列類型有 byte,bytearray 和 memoryview。

BOM

Byte Order Mark(位元組序標識符),該位元組串可能會出現在以 UTF-16 編碼的文件的開頭處。一個 BOM 就是字元 U+FEFF(ZERO WIDTH NO-BREAK SPACE),它編碼後在大數端的 CPU 上生成 b』t?』,在小數端的 CPU 上生成 b』?t』。因為 Unicode 中沒有 U+FFFE 這個字元,因此一旦出現該位元組串就能明確判斷出該編碼使用的位元組序。可能有點多餘,但在 UTF-8 文件中可能會找到編碼成 b』???』 的 BOM。

bound method

一個需要通過實例訪問的方法,因為它被綁定到了那個實例。任何一個方法實際上都是一個描述子 descriptor(實現了 get),當被訪問時,它將自身封裝到一個對象中,該對象將方法綁定到實例。該對象就是一個綁定方法。調用它可以不用傳遞 self 值。例如,通過以下賦值 my_method = my_obj.method,該綁定函數以後可以通過 my_method() 調用。

build-in function(BIF)

一個與 Python 解析器捆綁的函數,它使用低層實現語言編寫(例如,CPython 用的 C; Jython 用的 Java 等等)。該術語通常只表述那些無需導入就能使用的函數。但是內置模塊如 sys, math, re 等也含有內置函數。

byte string

很不幸 Python 3 中仍然還用這個名字表示 bytes 和 bytearray。在 Python 2 中, str 類型實際上是一個位元組字元串,因此使用該術語將 str 字元串和 unicode字元串進行區分是說得通的。而在 Python 3 中還堅持使用這個術語就沒有意義了,Python 3 中最好用 byte sequence 表述。

bytes-like object

一個通用的位元組序列。最常見的 bytes-like 類型是 bytes, bytearray 和 memoryview。但是其它支持低層 CPython buffer 協議的對象,如果它們的元素都是單位元組的話,也有符合條件的。

callable object

一個可以通過調用操作符 () 進行調用的對象,它能返回一個結果或者執行某些操作。在 Python 中有七種可調用對象: 用戶定義的函數,內置函數,內置方法,實例方法,生成器函數,類,實現了 call 特殊方法的類實例。

CamelCase

標識的一種寫法約定:相連的每個詞首字母都大寫(如 ConnectionRefusedError)。PEP-8 建議類名應該以 CamelCase 約定命名,但是 Python 的標準庫並沒有遵循這個建議。見 snake_case 術語。

CheeseShop

Python Package Index(PyPi) 的原名,以 Monty Python 劇中的乳酪店命名。目前 https://cheeseshop.python.org 仍然可訪問。 見 PyPI 術語。

class

一種用於定義新類型的程序結構,它具有數據屬性和可在其上進行某些操作的方法。見 type 術語。

code point

0 到 0x10FFFF 區間內的一個整數,用於標識 Unicode 字元資料庫中的一個記錄。在 Unicode 7.0 中,只有不到 3% 的代碼點被分配了字元。在 Python 文檔中,該術語可能有兩種表述。例如, chr 函數說需要一個整數 「code point」,而其相應的 ord 函數,描述為返回一個 「Unicode code point」。

code smell

表明該程序設計可能會有問題的一種代碼編寫模式。例如,過度使用 isinstance 來檢查具體類就是一種 code smell,因為它使程序在將來難以擴展以應對新的類型。

codec

(encoder/decoder),一個具有編碼和解析函數的模塊,通常用於進行 str 和 bytes 間的相互轉換,雖然 Python 也有幾個 codecs 可以用於執行 bytes 到 bytes,以及 str 到 str 的轉換。

collection

一種通用術語,用於表述這類數據結構:它由多個項組成,並且項能被單獨存取。 一些 collection (集合) 可以包含任意類型的對象(見 container 術語),而另一些只能包含一種簡單原子類型的對象(見 flat sequence 術語)。list 和 bytes 都是集合, 但是 list 是一個 container,而 bytes 是一個 flat sequence。

considered harmful

Edsger Dijkstra 的一封名叫 「Go To Statement Considered Harmful」 的信為那些批評某種計算機科學技術的論文標題建立了一種範式。Wikipedia 上的 「Considered harmful」 文章 舉了一些例子,包括由 Eric A. Meyer 寫的 「Considered Harmful Essays Considered Harmful」。

constructor

非正式地,類中的 init 實例方法被稱為構造器,因為它的語義和 Java 的構造器非常相似。但是,init 更恰當的名字應該叫初始化器,因為它實際上並沒有構造該實例,它只是接收這個實例為自己的 self 參數。constructor 這個術語用於描述類中的 new 方法會更好,Python 在調用 init 前調用該方法,它實際上負責創建並返回實例對象。見 initializer 術語。

container

一個能保存其它對象的引用的對象。Python 中的大多數 collection 類型都是容器,但有些不是。例如 flat sequence,它是 collection,但不是 container。

context manager

一個實現了 enter 和 exit 這兩個特殊方法的對象,用於 with 塊中。

coroutine

一個用於並行程序開發的 generator(生成器),該生成器通過 coro.send(value) 從一個 schedulere (調度器) 或 event loop (事件循環器) 中獲取數值。該術語可用於描述 generator function (生成器函數),也可以描述通過調用生成器函數所獲得的 generator object (生成器對象)。見 generator 術語。

CPython

標準 Python 解析器,用 C 實現。該術語只在以下情況下使用:討論特定於某種實現的特性時,或討論 PyPy 等有多種可用 Python 解析器時。

CURD

即 Create, Read, Update 和 Delete 的字母縮寫,它們是任何數據存儲型應用系統的四個基本功能。

decorator

一個可調用對象 A,調用能返回另一個可調用對象 B,對 A 的調用要在一個可調用對象 C 的定義體前使用語法 @A 進行。當碰到這種代碼時,Python 解析器調用 A(C) 並將結果 B 綁定到之前分配給 C 的變數,從而事實上將 C 的定義替換成了 B。如果該目標可調用對象 C 是一個函數,那麼 A 就是一個函數裝飾器;如果 C 是一個類,那麼 A 就是一個類裝飾器。

deep copy

拷貝一個對象時,對象中的所有屬性自身也被拷貝。對比 shallow copy。

descriptor

一個實現了 get, set, delete 這三個特殊方法中的一個或多個方法的類,當它的一個實例成為了另一個類(即 managed class, 受管理類) 的類屬性時,即成為一個 descriptor (描述子)。描述子對受管理類中的受管理屬性的存取和刪除操作進行管理,並通常將數據保存到 managed instance (受管理實例)中。

docstring

即 documentation string 的簡寫。當一個模塊、類或函數中的首行語句是一個字元串時,Python 會將該字元串作為該對象的 docstring,並保存到該對象的 doc 屬性上。見 doctest 術語。

doctest

是一個模塊,它包含一些函數用於解析和運行嵌在 Python 模塊的 docstring 中或純文本文件中的示例代碼。也可以在命令行中這樣使用:

python -m doctest module_with_tests.py

DRY

Don』t Repeat Yourself–一種軟體工程原則,它表述為 「Every piece of knowledge must have a single, unambiguous, authoritative representation within a system」。它最先出現在 Andy Hunt 和 Dava Thomas 寫的 《The Pragmatic Programmer》(Addison-Wesley, 1999) 中。

duck typing

多態的一種形式: 函數可作用於任何實現了特定方法的對象上,而不需要考慮它們的類或者顯式介面聲明。

dunder

double underscores 的簡寫,用於簡化那些前後帶有雙下劃線的特殊方法和屬性名的發音(如 len 讀作 「dunder len」)。

dunder method

見術語 dunder 和 special methods 。

EAFP

是 「It』s easier to ask forgiveness than permission」 的縮寫,它源於計算機先驅 Grace Hopper,Python 開發人員引用它來闡述這樣的動態編程實踐: 對屬性的存取都可假定屬性是存在的,因而不必進行事先測試,如果不存在的話,只需捕獲相關異常即可。hasattr 函數的 docstring 實際上這樣描述它的工作原理: 「通過調用 getattr(object, name) 並捕獵 AttributeError。」

eager

一個 iterable object (可迭代對象),它會立馬構建出其所有的元素。在 Python 中,一個 list comprehension (列表推導器) 是一個 eager。相較於 lazy。

fail-fast

一種系統設計原則,它建議錯誤應該儘早彙報。相比於大部分動態語言,Python 更加遵循該原則。例如,它沒有 「undefined」 值: 變數沒有初始化前一旦P被引用就會產生錯誤,並且 my_dict[k] 時當 k 不存在時會拋出異常 (相較於 JavaScript)。另一個例子,Python 中通過元組拆分進行的並行賦值只有當元組中的每個元素都匹配時才能進行,而 Ruby 卻是不聲不響地處理了元素個數不匹配的情況: 忽略 = 右邊沒有使用的元素,或者將 nil 值賦給左邊多餘的變數。

falsy

表示任何一個值 x, 該值 x 當調用 bool(x) 時會返回 False; 在布爾上下文中,例如控制 if 或 while 循環的表達式中,Python 默認使用 bool 來計算對象值。它的相反的值是 truthy。

file-like object

在官方文檔中非正式地用於表述實現了文件協議的對象,這些對象都有像 read, write, close 等方法。常見的變體有: 包含已編碼字元串以便於面向行讀寫的文本文件,StringIO 實例–內存中的文本文件和包含未編碼位元組數據的二進位文件。後者可能有緩衝,也可能沒有。標準文件類型自 Python 2.6 開始都定義在 io 模塊中。

first-class function

編程語言中能作為 first-class object (一類對象) 的任何函數 (即可以在運行時創建,能賦值給變數,能作為參數傳遞,能作為另一個函數的返回值返回)。Python 函數都是一類函數。

flat sequence

一種序列類型: 它實際存儲其元素的值,而不是存儲到其它對象的引用。內置的類型如 str, bytes, bytearray, memoryview 和 array.array 等都是 flat sequence (簡單序列)。而 list, tuple 和 collections.deque 都是 container sequence (容器序列)。見術語 container。

function

嚴格來說,是一個從 def 塊或 lambda 表達式運行而來的對象。非正式地,function 這個詞用於描述任何可調用對象,如方法、甚至有時也可以是類。官方的 內置函數 列表中也含有一些內置類,像 dict, range 和 str 等。見 callable object。

genexp

generator expression 的縮寫。

generator

一個由 generator function (生成器函數) 或 generator expression (生成器表達式) 構建的迭代器,它在產生值時無需遍歷整個集合; 典型的例子是一個產生 Fibonacci 序列的生成器,由於該序列是無限的,因而不適合在存於一個集合中。該術語除了表述從生成器函數調用中返回的對象外,有時也用於表述該生成器函數本身。

generator function

一個在函數體中使用了 yeild 關鍵字的函數。當被調用時,generator function (生成器函數) 會返回一個 generator (生成器)。

generator expression

一種由括弧包圍的表達式,它使用和 list comprehension (列表推導式) 相同的語法,只不過它返回的不是列表,而是一個生成器。一個 generator expression (生成器表達式) 可以被理解成列表推導式的 lazy 版本。見術語 lazy。

generic function

指一組函數:它們意在以可定製的方式為不同的對象類型實現相同的操作。在 Python 3.4 中,functools.singledispatch 裝飾器是創建 generic function (通用函數) 的標準方法。在其它語言中也叫做 multimethods。

GoF book

《Design Patterns: Elements of Resuable Object-Oriented Software》(Addison Wesley, 1995) 的別稱。它的作者即所謂的四人幫: Erich Gamma, Richard Helm, Ralph Johnson 和 John Vlissides。

hashable

一個對象為 hashable 即指它同時含有 hash 和 eq 方法,並且有以下限制: 它的哈希值永遠不會變且當 a == b 成立時 hash(a) == hash(b) 也必須為 True。大多數內置的不可修改類型都是 hashable 的,但是元組只有當其每個元素都 hashable 時才是 hashable 的。

higher-order function

指一個能接受另一個函數作為參數的函數,如 sorted, map 和 filter 等,或者指一個將函數作為返回值的函數,如 Python 裝飾器。

idion

「A manner of speaking that it natural to native speakers of a language」,摘自 Princeton WordNet。

import time

指一個模塊初始化運行的時刻,此時模塊代碼被 Python 解析器載入,並從上到下進行運算,然後被編譯成位元組碼。這是類和函數執行定義並變成活躍對象的時刻,也是執行裝假器的時刻。

initializer

更適合 init 方法的名字(相較於 constructor 構造器)。init 的任務是初始化作為 self 參數接收來的實例。而實際的實例構建過程是由 new 函數完成的。見術語 constructor。

iteralbe

任何一個只要通過 iter 這個內置函數能獲取一個 iterator (迭代器) 的對象。iterable object (可迭代對象) 可作為 for 循環、推導式和元組拆分時的元素源。那些實現了 iter 方法並返回一個迭代器的對象都是 iterable 的; 而其它實現了 getitem 方法的對象可能也是 iterable 的。

iterable unpacking

tuple unpacking 的一個現代的,更加準確的同義詞。見 parallel assignment。

iterator

任何一個實現了 next 方法的的對象,next 不接收參數,調用它時會返回序列中的下一個元素,或者當序列中已無元素時會拋出 StopIteration 異常。Python 的 iterator (迭代器) 也會實現 iter 方法,因而它們也是 iterable 的。經典的迭代器,根據原來的設計模式,是從集合中返回元素。generator (生成器) 也是一個迭代器,但是它更加靈活。見術語 generator。

KISS principle

即 「Keep It Simple, Stupid」。提倡尋求儘可能簡單,穩定的解決方案。這句話是由 Kelly Johnson 提出的,Johnson 是一個天才的航空航天工程師,他在真正的 51 區工作,20 世紀的很多高級飛行器都是由他設計出來的。

lazy

一個按需產生元素的可迭代對象。在 Python 中,相較於 eager,生成器是 lazy 的。

listcomp

list comprehension 的簡寫。

list comprehension

一種由方括弧包圍的表達式: 它使用 for 和 in 關鍵字,並對來自一個或多個可迭代對象中的元素進行處理和過濾,從而創建出一個列表。list comprehension (列表推導式) 是即時計算的,見術語 eager。

liveness

一個非同步的、多線程的或者分散式的系統,當 「某些好事終會發生」 (即雖然一些期望的計算現在還沒有發生,但它最終會完成的) 時,即展現了它的 liveness (活性)。如果系統死鎖了,那它就失去了它的活性。

magic method

同 special method。

managed attribute

一個由描述子對象管理的公共屬性。雖然 managed attribute (受管理屬性) 是在 managed class (受管理類) 中定義的,但是它操作起來像一個實例屬性 (即它通常在每個實例中都有一個值,並保存在 storage attribute 中)。見術語 descriptor。

managed class

一個使用描述子對象來管理其至少一個屬性的類。見術語 descriptor。

managed instance

managed class 的一個實例。見 managed attribute 和 descriptor。

metaclass

一種其實例也是類的類。默認地,Python 的類是 type 的實例,例如,type(int) 返回類 type,因此 type 是一個 metaclass。用戶自定義的 metaclass 可以通過繼承 type 來創建。

metaprogramming

一種使用有關其自身的運行時信息來修改其行為的程序編寫實踐。例如,ORM 可能會檢查數據模型類的聲明來確定如何去驗證資料庫記錄中的數據域,以及如何將資料庫類型轉換成 Python 中的類型。

monkey patching

在運行時動態地修改一個模塊、類,或者函數,通常是為了添加功能和修正 Bug。因為它是在內存中實現的,並沒有修改源代碼,因此一個 monkey patch 只在當前運行的進程中有效。Monkey patch 破壞了封裝性並且趨於和修復部分的實現細節緊密藕合,因此它們只被認為是臨時的解決方法,不是代碼集成的一種推薦技術。

mixin class

一種意在與一個或更多個類一起使用在多重類繼承樹的類。一個 mixin 類不能被初始化,mixin class 的具體子類也應該繼承其它的非 mixin class。

mixin method

一個具體的方法實現: 該方法由一個 ABC 或 mixin class 提供。

mutator

見術語 accessor。

name mangling

自動將私有屬性從 x 重命名為 _MyClassx 的過程,它由 Python 解析器在運行時執行。

nonoverriding descriptor

一種未實現 set 的描述子,因而不會幹涉受管理實例上的受管理屬性的設置過程。其結果是,如果受管理實例上設置了一個同名屬性,將隱藏該實例上的描述子。也稱作 nondata descriptor 或者 shadowable descriptor。相較於 overriding descriptor。

ORM

Object-Relation Mapper–一種 API: 它以 Python 類和對象的形式提供訪問資料庫和記錄的方式,提供方法調用來執行資料庫操作。SQLAlchemy 是一個流行地獨立 Python ORM; Django 和 Web2py 框架都有它們自己捆綁的 ORM。

overriding descriptor

一種實現了 set 的描述子,因而它會幹預並覆蓋在受管理實例上設置受管理屬性的企圖。也稱為 data descriptor 或者 enforced descriptor。相較於 nonoverriding descriptor。

parallel assignment

用來將一個可迭代對象中的多個元素賦值給多個變數,使用像 a, b = [c, d] 這樣的語法–也稱為 destructing assignment (解構賦值)。這是 tuple unpacking (元組拆分) 的常見用法。

parameter

函數會聲明成具有 0 到多個 「形式參數」,它們都是未綁定的本地變數。當函數被調用時,傳遞的參數或 「實參」 會綁定到這些變數。通常,arguemnt 指實參,而 parameter 指形參,但是 Python 文檔和 API 中這兩者都是混用的。見術語 argument。

prime (動詞)

prime 動詞的含義是 「填充、事先準備好」,它在一個協程上調用 next(coro),使其運行到首個 yeild 表達式處,從而使其能準備好接收由接下來的 coro.send(value) 調用發送的數值。

PyPI

即 Python Package Index,上面有超過 60,000 個包,也稱作 Cheese shop (見術語 Cheese shop)。PyPI 發音為 「pie-P-eye」,以避免與 PyPy 混淆。

PyPy

Python 編程語言的另一種實現,它所使用的工具鏈將 Python 的一個子集編譯成了機器碼,因此解析器的源代碼實際上是用 Python 編寫的。PyPy 還包含一個 JIT,用於將用戶程序實時轉換成機器碼–像 Java VM 做的一樣。截止 2014 年 12 月,根據 公布的評測數據,PyPy 平均比 CPython 快 6.8 倍。PyPy 發音為 「pie-pie」,以避免與 PyPI 混淆。

Pythonic

用於稱讚符合語言習慣的 Python 代碼,這些代碼很好地利用了語言特性,從而顯得簡潔、易讀,通常也更快。也用於表述 API,這些 API 使得熟練的 Python 程序員使用它們進行編程時顯得很自然。

refcount

每個 CPython 對象在內部保存的引用計算器,以便決定它自身何時能被垃圾回收器回收。

REPL

Read-Eval-Print Loop,一個互動式的控制台,例如標準的 python 或者其它的像 ipython, bpython 和 Python Anywhere 等。

sequence

某些可迭代數據結構的通用名字: 這些數據結構有已知的大小 (如 len(s)) 並且允許使用基於 0 的整數索引進行訪問 (如 s[0])。sequence 一開始就是一個 Python 術語,但是直到 Python 2.6 它才正式地作為一個抽象類在 collections.abc.Sequence 中定義。

serialization

將一個對象從其內存結構轉換成一個二進位或面向文本的結構,以便於存儲或傳輸,它能使用的方式能便於以後在相同或不同的系統上重建該對象的一個克隆版本。pickle 模塊支持將任意的 Python 對象序列化成一個二進位格式。

shallow copy

對象的拷貝版本與原對象共享屬性對象的引用。相較於 deep copy。也見 aliasing。

singleton

一個對象是某個類的唯一存在的實例–通常不是偶爾引起的,而是有意設計該類以避免其能創建多個實例。有一個設計模式也叫 Singleton,是編寫這種類的指南。Python 中的 None 對象就是一個 singleton (獨子)。

slicing

通過使用切片表示法來生產某個序列的子集,比如 my_sequence[2:6]。Slicing (切片) 通常是通過複製數據來創建一個新的對象; 特別如 my_sequence[:] 會創建整個序列的一個 shallow copy (淺複製版本)。而一個 memoryview 對象通過切片生成的新 memoryview 對象能與源對象共享數據。

snake_case

標識的一種寫法約定:用下劃線 (_) 連接單詞,例如 run_until_complete。PEP-8 稱這種風格為 「單詞都小寫,並以下劃線分隔」 並且推薦以它來命名函數,方法,參數和變數。而對於包,PEP-8 建議名字中的各名詞直接相連接,不使用分隔符。Python 標準庫中有很多 snake_case 型的標識例子,但是也有很多標識中的單詞沒有用分隔符 (例如 getattr, classmethod, isinstance, str.endswith 等)。見術語 CamelCase。

special method

具有特殊名字的方法,如 getitem,它的開頭和結尾都有雙下劃線。

storage attribute

managed instance (受管理實例) 中的一個屬性,用於保存某個受描述子管理的屬性值。

strong reference

該引用使被引用的對象在 Python 中一直保持活躍。相較於 weak reference。

tuple unpacking

將來自一個可迭代對象中的元素賦值給一組變數 (例如: first, second, third = my_list)。Python 開發人員一般都使用該術語,但是 iterable unpacking 也越來越受到青睞。

truthy

表示任何一個值 x, 該值 x 當調用 bool(x) 時會返回 True; 在布爾上下文中,例如控制 if 或 while 循環的表達式中,Python 默認使用 bool 來計算對象值。它的相反的值是 falsy。

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。

unbound method

一個實例方法如果直接通過類來訪問就沒有綁定到該實例上; 從而被稱為是一個 「unbound method (未綁定的方法)」。要想順利進行,對一個未綁定方法的調用必須顯式地傳遞一個類的實例作為首個參數。那個實例將賦給該方法的 self 參數。見術語 bound method。

uniform access principle

Bertrand Meyer, Eiffel 語言的創建者,寫道: 「All services offered by a module should be available through a uniform notation, which does not betray whether they are implemented through storage or through computation.」 屬性和描述子使得在 Python 中能實現 uniform access principle (統一訪問原則)。由於沒有 new 操作符,調用函數和初始化對象看起來是一樣的,這也是該原則的另一種形式: 調用者無需知道被調用對象是一個類、一個函數、或者是任何其它的可調用對象。

user-defined

在 Python 文檔中 user 這個單詞幾乎總是指你和我–使用 Python 語言的程序員–相較於那些實現 Python 解析器的開發人員。因此術語 「user-defined class」 意指一個用 Python 編寫的類,相較於內置的用 C 編寫的類,比如說 str。

view

Python 3 中的 view (視圖) 指的是通過 dict 的 .keys(), .values() 和 .items() 方法返回的特殊數據結構,它無需進行數據複製,就能為我們提供一個關於 dict 鍵和值的一個動態視圖,而在 Python 2 中,由於這些方法返回列表,因而有數據複製的過程。所有 dict 視圖都是可迭代的,並且都支持 in 操作符。另外,如果被視圖引用的元素都是 hashable 的,那麼該視圖也會實現 collections.abc.Set 介面。所有由 .keys() 方法返回的視圖都屬於這種情況,而當 dict 的值是 hashable 時,由 .items() 方法返回的視圖也是 hashable 的。

vitual subclass

一個沒有繼承 superclass,但又使用 TheSuperClass.register(TheSubClass) 註冊過的類。參見 abc.ABCMeta.register 的文檔。

wart

該語言的不好的特性。Andrew Kuchling 的那篇很有名的文章 「Python warts」 已經被 BDFL 認可了,並在他設計 Python 3 時做出打破向後兼容性這樣的決定中起來了很大作用,因為如果不這樣,提到的大部分缺陷都將無法修復。Kuchling 提到的很多問題都已在 Python 3 中修復了。

weak reference

一種特殊種類的對象引用,它不增加 referent 對象引用計數值。弱引用由 weakref 模塊中的某個函數和數據結構創建。

YAGNI

「You Ain』t Gonna Need It」, 該標語用來避免實現那些現在不需要,而基於未來假定會需要的那些功能。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 Python熱愛著 的精彩文章:

用Django來創建一個自己的博客

TAG:Python熱愛著 |