파이썬에서 왜 목록의 후행 쉼표가 유효한 구문인지 궁금하고 파이썬이 단순히 그것을 무시하는 것처럼 보입니다.
>>> ['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를 방지하기 위해 목록의 마지막 요소에서 ‘,’뒤에 오는 것을 허용합니다.