2010-10-27 79 views
3

爲什麼collection.defaultdictcollection.OrderedDict有不同的大寫字母?資料庫類名稱

我應該意識到有一些細微差別嗎?

(P3K)

回答

4

類名的大小寫是無關緊要的,它不代表任何東西。除了有時Python有機增長,標準庫與其他大型庫(如Win32 API或Java標準庫)沒有相同的感覺。

+0

應該注意的是,在Python 3中,努力標準化內置模塊和類的名稱。 http://www.python.org/dev/peps/pep-3108/#pep-8-violations-done – 2012-08-10 02:05:56

2

通常情況下,這是按照良好的作風,類資本。

def MyClass (object): 
    pass 

my_instance = MyClass() 

這樣子。

你應該閱讀本文吧: http://www.python.org/dev/peps/pep-0008/

+0

然後問題是,爲什麼'defaultdict'不是這種情況? – 2010-10-27 12:12:27

+0

嗯。好問題。 :-)我認爲這可能與其父類dict一致。 dict是內置類型之一,因此,小寫字母(str,int,...)。可能是作者希望保持開放的選項,以引入defaultdict內置命名空間,旁邊字典。在這種情況下,**違反規則**(比較PEP8)是有道理的。 – 2010-10-27 12:28:29

+0

'OrderedDict'也是'dict'的一個子類,它的大寫正確。至於將'defaultdict'轉換爲內置類,爲什麼不同時轉換大小寫呢?通過該標記,Python庫中的任何新類都應該以小寫字母編寫,以防將來某一天成爲內置函數。 – max 2010-10-27 12:34:58

2

defaultdict用C語言編寫,並PEP8不適用,在另一方面OrderDict是用Python編寫,

您可以閱讀C代碼規範爲C Python實現此:PEP 7

參考:源代碼python2.7

defaultdict : Modules/_collectionsmodule.c 
OrderDict : Lib/collections.py 
+0

爲什麼不能在大寫的情況下將C類暴露給Python庫? C區分大小寫。我錯過了什麼? – max 2010-10-27 12:36:09

+0

@max:每種語言都有他的編碼規範,我們不能用C語言編寫使用python規範的pep8吧?這裏是C擴展的規範:http://www.python.org/dev/peps/pep-0007/ – mouad 2010-10-27 12:42:32

+0

我一般都同意......但是當在C中編寫一個函數只是爲了提供一個庫函數對於Python的標準庫,我會遵循Python風格的函數名稱 – max 2010-10-28 01:25:14