回答:
空のタプルを除くすべてのケースで、コンマが重要です。括弧は、タプルを関数の引数のセットや演算子の優先順位と区別したり、改行を許可したりするなど、他の構文上の理由で必要な場合にのみ必要です。
タプル、リスト、または関数の引数の末尾のコンマは、特に、複数の行に分割される長い初期化がある場合に適しています。常に末尾にコンマを含める場合は、別の要素を追加することを期待して最後に別の行を追加せず、代わりに有効な式を作成します。
a = [
"a",
"b"
"c"
]
後で拡張された2要素のリストとして開始されたと仮定すると、おそらくすぐには明らかではない方法で問題が発生しています。常に末尾のコンマを含めると、そのトラップを回避できます。
単一項目のタプルが、タプルまたは括弧で囲まれた式の定義を明確にすることのみが必要です。
(1) # the number 1 (the parentheses are wrapping the expression `1`)
(1,) # a 1-tuple holding a number 1
複数のアイテムの場合、それがタプルであることは完全に明らかであるため、不要になりました。ただし、末尾のコンマを使用すると、複数行を使用してそれらを簡単に定義できます。誤ってコンマを省略したため、構文を壊すことなく、最後に項目を追加したり、項目を再配置したりできます。
例えば、
someBigTuple = (
0,
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
#...
10000000000,
)
これはタプルだけでなく、他のコレクション(リストや辞書など)にも適用されることに注意してください。
key: value,
1行に1つ持つのに非常に便利で、新しいものを追加するときにカンマを処理しません。
オプションです:Python wikiを参照してください。
概要:単一要素のタプルには末尾にコンマが必要ですが、複数要素のタプルの場合はオプションです。
また、必要な状況を考慮してください。
>>> (('x','y'))*4 # same as ('x','y')*4
('x', 'y', 'x', 'y', 'x', 'y', 'x', 'y')
#Expected = (('x', 'y'), ('x', 'y'), ('x', 'y'), ('x', 'y'))
したがって、この場合、外側の括弧はグループ化括弧にすぎません。それらをタプルにするには、末尾にコンマを追加する必要があります。すなわち
>>> (('x','y'),)*4
(('x', 'y'), ('x', 'y'), ('x', 'y'), ('x', 'y'))
これが存在するもう1つの理由は、コードの生成と__repr__
関数の記述が容易になることです。あなたのように構築されたいくつかのオブジェクトを持っている場合たとえば、obj(arg1, arg2, ..., argn)
、その後、あなただけ書くことができますobj.__repr__
ように
def __repr__(self):
l = ['obj(']
for arg in obj.args: # Suppose obj.args == (arg1, arg2, ..., argn)
l.append(repr(arg))
l.append(', ')
l.append(')')
return ''.join(l)
末尾のコンマが許可されていない場合は、最後の引数を特別なケースにする必要があります。実際、リスト内包表記を使用して上記を1行で書くことができます(読みやすくするために長く書きました)。あなたが最後の用語を特別なケースにしなければならないなら、それをするのはそれほど簡単ではないでしょう。
join
、その場合は次のように使用できますdef __repr__(self): 'obj(' + ', '.join([repr(arg) for arg in obj.args]) + ')'
。
join
。
PEP 8-Pythonコードのスタイルガイド-末尾のコンマを使用する場合
末尾のコンマは通常はオプションですが、1つの要素のタプルを作成する場合は必須です(Python 2ではprintステートメントのセマンティクスがあります)。明確にするために、後者を(技術的に冗長な)括弧で囲むことをお勧めします。
はい:
FILES = ('setup.cfg',)
わかりましたが、混乱します:
FILES = 'setup.cfg',
後続のコンマが冗長である場合、バージョン管理システムが使用されているとき、値のリスト、引数、またはインポートされたアイテムが時間の経過とともに拡張されることが予想されるときに、それらはしばしば役立ちます。パターンは、各値(など)を1行に1つずつ配置し、常に末尾にコンマを追加し、次の行に右括弧/大括弧/中括弧を追加します。ただし、終了デリミタと同じ行に末尾のコンマを置くことは意味がありません(上記のシングルトンタプルの場合を除いて)。
はい:
FILES = [
'setup.cfg',
'tox.ini',
]
initialize(FILES,
error=True,
)
番号:
FILES = ['setup.cfg', 'tox.ini',]
initialize(FILES, error=True,)
コーディングスタイルはあなたの好みです、あなたがコーディング標準が重要だと思うなら、あなたを導くことができるPEP-8があります。
次の表現の結果についてどう思いますか?
x = (3)
x = (3+2)
x = 2*(3+2)
はい、xは単なる数値です。