2009-09-16 23 views
5

您認爲在代碼中編寫字典文字時主要使用的約定是什麼?Python支架約定

我會寫一個可能的約定作爲答案。

+3

民意調查應該是社區維基 – SilentGhost 2009-09-16 09:29:42

回答

16
my_dictionary = { 
    1: 'something', 
    2: 'some other thing', 
} 
+6

+1爲尾隨逗號。 – RichieHindle 2009-09-16 09:16:31

+0

起初,我不喜歡列表,字典等尾隨逗號的效用,但它*真正*簡化了列表的後續編輯,無論您是重新排序,複製/粘貼還是添加新項目。 – PaulMcG 2009-09-16 12:14:33

+3

添加一行是逗號的單行比較。 – u0b34a0f6ae 2009-09-16 13:27:37

13

我想說幾乎沒有標準。

我見過縮進的方式有兩種:

Indent 1: 
my_dictionary = { 
    'uno': 'something', 
    'number two': 'some other thing', 
} 

Indent 2: 
my_dictionary = {'uno': 'something', 
       'number two': 'some other thing', 
       } 

我看到過三放置有尾架:

End 1: 
my_dictionary = {'uno': 'something', 
       'number two': 'some other thing', 
} 

End 2: 
my_dictionary = {'uno': 'something', 
       'number two': 'some other thing', 
       } 

End 3: 
my_dictionary = {'uno': 'something', 
       'number two': 'some other thing',} 

有時你辯解值:

my_dictionary = {'uno':  'something', 
       'number two': 'some other thing', 
       } 

有時甚至是冒號:

my_dictionary = {'uno'  : 'something', 
       'number two' : 'some other thing', 
       } 

看起來很奇怪。

有時你有一個結束逗號,有時不是:

my_dictionary = {'uno': 'something', 
       'number two': 'some other thing'} 

有時候你堅持都放在同一行(如果它符合)。

my_dictionary = {'uno': 'something', 2: 'some other thing'} 

每個人似乎都有自己的這些風格的組合。就我個人而言,我傾向於使用你的例子中的風格,除非有理由不這樣做。當您將字典作爲陳述的一部分時,常見的原因不是。像這樣:

amethodthattakesadict({'hey': 'this', 
         'looks': 'a', 
         'bit': 'shitty', 
         }) 

我建議你適應編寫代碼的人的風格。如果這是你的代碼:只要你喜歡。 :-)

+2

+1,用於很好地描述所有可能性。 – hcs42 2009-09-16 09:30:54

+5

我認爲這些例子中唯一由PEP8管轄的部分是冒號周圍的間距。之前爲零。 – Triptych 2009-09-16 15:34:26

8

關於最終括號:我喜歡這樣的:

my_dictionary = { 
    'a': 'first value', 
    'b': 'second', 
    } 

,我會告訴你爲什麼:因爲Python代碼縮進有沒有關閉的記號,代碼縮進這樣的:第一行(if,while,def等)從該子句的其餘部分縮進,其餘所有行縮進相同的數量。該條款的最後一行與其他所有內容一起縮進。下一行縮進與第一行相同,是下一個子句的第一行,而不是這一行的最後一行。

因此,我喜歡使用與代碼子句類似的約定縮進數據結構,即使數據結構具有明確的結束標記,因此可以具有更大的靈活性。

-3

我這樣做,如果字典是太大,無法在同一行:

d = \ 
    { 
    'a' : 'b', 
    'c' : 'd' 
    } 
3

縮進風格1結束樣式3(倫納特的回答後):

my_dictionary = {1: 'thing_one', 
        2: 'thing_two', 
        ... 
        n: 'thing_n'} 

這可能是Python代碼中括號內實體的最無縫縮進樣式,因爲它非常類似於Python的空白格式。在Python代碼中刪除C樣式的縮進對我來說總是顯得有些尷尬,我懷疑它最常用,因爲習慣於類C語言的程序員(因爲它們無處不在)可能沒有暴露於不同的縮進樣式。

一個缺點可能是插入開始或結束比其他樣式困難一些。考慮到支持編寫Python代碼的適當的編輯器,它不應該有很大的區別。

在上下文中嘗試使用此縮進樣式,並將其與C樣式縮進並排比較,然後確定哪一個看起來更加pythonic和一致。

也許這可以被稱爲Lisp風格壓痕,因爲它是在Lisp代碼,因爲 百年 幾十年來一直縮進的方式,但它是,例如,還經常在Smalltalk代碼中使用。在討論放置括號時(通過Lisp類似的語言),你經常會閱讀的一件事是:「爲什麼要給他們多一些線,他們是否重要?」。

儘管如此,它仍然是一件有趣的事情。