[python] 목록에 후행 쉼표가 허용되는 이유는 무엇입니까?

파이썬에서 왜 목록의 후행 쉼표가 유효한 구문인지 궁금하고 파이썬이 단순히 그것을 무시하는 것처럼 보입니다.

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

그것은 의미가 때 자사의 튜플 이후 ('a')('a',)다른 두 가지이지만, 목록에있는?



답변

주요 이점은 여러 줄 목록을 쉽게 편집 할 수있게하고 난이도를 정리하는 것입니다.

바꾸다:

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

에:

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

diff의 한 줄 변경 만 포함합니다.

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

후행 쉼표를 생략하면 더 혼란스러운 여러 줄 diff를 이깁니다.

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

후자의 diff는 한 줄만 추가되었고 다른 줄은 내용을 변경하지 않았 음을 확인하기 어렵게 만듭니다.

또한 이렇게 할 위험을 줄입니다.

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

암시 적 문자열 리터럴 연결을 트리거 s = ['manny', 'mo', 'jackroger']하여 의도 한 결과 대신 생성 합니다.


답변

배열에서 후행 쉼표를 허용하는 일반적인 구문 규칙이며 C 및 Java와 같은 언어는 허용하며 Python은 목록 데이터 구조에이 규칙을 채택한 것으로 보입니다. 목록을 채울 코드를 생성 할 때 특히 유용합니다. 요소와 쉼표 시퀀스를 생성하기 만하면 마지막에 쉼표가 없어야하는 특수한 경우로 간주 할 필요가 없습니다.


답변

특정 종류의 버그를 제거하는 데 도움이됩니다. 여러 줄에 목록을 작성하는 것이 더 분명한 경우가 있습니다. 그러나 나중에 유지 관리하면 항목을 다시 정렬 할 수 있습니다.

l1 = [
        1,
        2,
        3,
        4,
        5
]

# Now you want to rearrange

l1 = [
        1,
        2,
        3,
        5
        4,
]

# Now you have an error

그러나 후행 쉼표를 허용하고 사용하면 오류없이 줄을 쉽게 재정렬 할 수 있습니다.


답변

튜플은 ('a')암시 적 연속 및 ()s를 선행 연산자로 사용하여 확장 되는 반면 ('a',)길이 1 튜플을 참조 하므로 다릅니다 .

원래 예는 tuple('a')


답변

주된 이유는 diff를 덜 복잡하게 만드는 것입니다. 예를 들어 목록이 있습니다.

list = [
    'a',
    'b',
    'c'
]

다른 요소를 추가하고 싶습니다. 그런 다음이 작업을 수행하게됩니다.

list = [
    'a',
    'b',
    'c',
    'd'
]

따라서 diff는 두 줄이 바뀌 었음을 보여줍니다. 먼저 ‘c’와 함께 ‘,’를 추가하고 마지막 줄에서 ‘d’를 추가합니다.

따라서 파이썬은 혼란을 유발할 수있는 여분의 diff를 방지하기 위해 목록의 마지막 요소에서 ‘,’뒤에 오는 것을 허용합니다.


답변