What is the syntax rule for having trailing commas in tuple definitions?
Каково синтаксическое правило для наличия завершающих запятых в определениях кортежей?
В случае кортежа из одного элемента запятая в конце обязательна.
a = ('foo',)
Как насчет кортежа с несколькими элементами? Кажется, что независимо от того, существует запятая в конце или нет, они оба допустимы. Это правильно? Наличие завершающей запятой, на мой взгляд, проще для редактирования. Это плохой стиль кодирования?
a = ('foo1', 'foo2') b = ('foo1', 'foo2',)
Переведено автоматически
Ответ 1
Для устранения неоднозначности определения кортежа или выражения, заключенного в круглые скобки, требуется только для кортежей с одним элементом.
(1) # the number 1 (the parentheses are wrapping the expression `1`) (1,) # a 1-tuple holding a number 1
Для более чем одного элемента это больше не обязательно, поскольку совершенно ясно, что это кортеж. Однако запятая в конце допускается, чтобы упростить их определение с использованием нескольких строк. Вы могли бы добавлять в конец или переставлять элементы, не нарушая синтаксис, потому что вы случайно пропустили запятую.
Обратите внимание, что это применимо и к другим коллекциям (например, спискам и словарям), а не только к кортежам.
Ответ 2
Во всех случаях, кроме пустого кортежа, важна запятая. Круглые скобки требуются только тогда, когда это требуется по другим синтаксическим причинам: для отличия кортежа от набора аргументов функции, приоритета оператора или для разрешения разрывов строк.
Запятая в конце для кортежей, списков или аргументов функций - хороший стиль, особенно когда у вас длинная инициализация, разбитая на несколько строк. Если вы всегда включаете запятую в конце, вы не добавите еще одну строку в конец, ожидая добавления другого элемента, и вместо этого просто создадите допустимое выражение:
a = [ "a", "b" "c" ]
Предполагая, что это началось как список из 2 элементов, который позже был расширен, что-то пошло не так, возможно, не сразу очевидным образом. Всегда включайте завершающую запятую, и вы избежите этой ловушки.
Ответ 3
Еще одно преимущество завершающих запятых в том, что это улучшает внешний вид различий. Если вы начали с
a = [ 1, 2, 3 ]
и изменил его на
a = [ 1, 2, 3, 4 ]
Разница будет выглядеть следующим образом
a = [ 1, 2, - 3 + 3, + 4 ]
Тогда как, если бы вы начали с завершающей запятой, например