1. ホーム
  2. python

[解決済み] なぜリストでは末尾のカンマが許されるのですか?

2022-04-26 20:05:17

質問

Pythonでは、リストの末尾のカンマは有効な構文ですが、Pythonが単にそれを無視するように見えるのはなぜか、不思議です。

>>> ['a','b',]
['a', 'b']

タプルの場合は、次のようになります。 ('a')('a',) は別物ですが、リストでは?

どのように解決するのですか?

主な利点は、複数行のリストを編集しやすくすることと、差分の散らかりを減らすことができることです。

変更する。

s = ['manny',
     'mo',
     'jack',
]

になります。

s = ['manny',
     'mo',
     'jack',
     'roger',
]

は、diffで1行しか変更されません。

  s = ['manny',
       'mo',
       'jack',
+      'roger',
  ]

これは、最後のカンマが省略された場合の、より紛らわしい複数行の差分よりも優れています。

  s = ['manny',
       'mo',
-      'jack'
+      'jack',
+      'roger'
  ]

後者の差分では、1行だけ追加され、もう1行は内容を変更していないことがわかりにくくなります。

するリスクも減ります。

s = ['manny',
     'mo',
     'jack'
     'roger'  # Added this line, but forgot to add a comma on the previous line
]

とトリガーをかける 暗黙の文字列リテラル連結 を生成します。 s = ['manny', 'mo', 'jackroger'] となり、意図した結果ではなくなってしまいます。