2009-09-16 3 views
5

Как вы думаете, что такое соглашение, которое в основном используется при написании словарных литералов в коде?Соглашение о скобках Python

Я напишу одно возможное соглашение в качестве ответа.

+3

опросы должны быть wiki сообщества – SilentGhost

ответ

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

+1 для задней запятой. – RichieHindle

+0

Сначала я не оценил полезность конечной запятой в списках, dicts и т. Д. Но это * действительно * упрощает последующее редактирование списка, независимо от того, переупорядочиваете ли вы, копируете/вставляете или добавляете новые элементы. – PaulMcG

+3

Добавление одной строки - это однострочный diff с запятой на месте. – u0b34a0f6ae

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

+5

Я думаю, что единственная часть тех примеров, которые фактически управляются PEP8, - это расстояние вокруг двоеточий. Ноль до, один за другим. – Triptych

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. Отбрасывание в отступы C-стиля в коде Python всегда казалось мне немного неудобным, и я подозреваю, что он в основном используется, потому что программисты, привыкшие к C-подобным языкам (из-за их вездесущности), возможно, не подвергались различным стилям отступа.

Недостатком может быть то, что вставка в начале или конце немного сложнее, чем в других стилях. Учитывая правильный редактор, который поддерживает пишущий код Python, он не должен сильно отличаться.

Попробуйте этот стиль отступов в контексте и сравните его с отступом C-стиля бок о бок, а затем решите, какой из них выглядит более питоническим и последовательным.

Может быть, это можно было бы назвать сюсюкать-стиль отступов, потому что это путь, в котором сюсюкать код был отступом так веков десятилетий, но, например, также часто используется в Smalltalk коде. Одна вещь, которую вы часто читаете в дискуссиях о размещении скобок (на Lisp-подобных языках): «Зачем давать им лишние строки? Они важны?».

В конце дня, однако, это в основном вкус.

Смежные вопросы