단일 요소 튜플의 경우 후행 쉼표가 필요합니다.
a = ('foo',)
여러 요소가있는 튜플은 어떻습니까? 후행 쉼표가 있는지 여부에 관계없이 둘 다 유효한 것 같습니다. 이 올바른지? 후행 쉼표를 사용하면 편집하기가 더 쉽습니다. 그게 나쁜 코딩 스타일인가요?
a = ('foo1', 'foo2')
b = ('foo1', 'foo2',)
답변
빈 튜플을 제외한 모든 경우에 쉼표가 중요합니다. 괄호는 다른 구문상의 이유로 필요한 경우에만 필요합니다. 즉, 튜플을 함수 인수 집합, 연산자 우선 순위에서 구별하거나 줄 바꿈을 허용하기 위해 필요합니다.
튜플, 목록 또는 함수 인수의 후행 쉼표는 특히 여러 줄로 분할 된 긴 초기화가있는 경우 좋은 스타일입니다. 항상 후행 쉼표를 포함하면 다른 요소를 추가하고 대신 유효한 표현식을 생성하기 위해 끝에 다른 줄을 추가하지 않습니다.
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,
)
이는 튜플뿐만 아니라 다른 컬렉션 (예 : 목록 및 사전)에도 적용됩니다.
답변
후행 쉼표의 또 다른 장점은 diff를 더 멋지게 보이게한다는 것입니다. 당신이 시작했다면
a = [
1,
2,
3
]
그리고 그것을
a = [
1,
2,
3,
4
]
diff는 다음과 같습니다.
a = [
1,
2,
- 3
+ 3,
+ 4
]
후행 쉼표로 시작했다면
a = [
1,
2,
3,
]
그런 다음 diff는
a = [
1,
2,
3,
+ 4,
]
답변
답변
또한 원하는 상황을 고려하십시오.
>>> (('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'))
답변
후행 쉼표는 요소가 하나 인 튜플에만 필요합니다. 더 큰 튜플에 대해 후행 쉼표를 사용하는 것은 스타일의 문제이며 필수는 아닙니다. 가장 큰 장점은 자주 수정되는 여러 줄의 대형 튜플 (예 : 구성 튜플)이있는 파일에 대한 명확한 차이입니다.
답변
그것은 간단한 대답입니다.
a = ( “s”)는 문자열입니다.
과
a = ( “s”,)는 하나의 요소가있는 튜플입니다.
파이썬은 문자열과 튜플을 구별하기 위해 하나의 요소 튜플의 경우 추가 쉼표가 필요합니다.
예를 들어 파이썬 콘솔에서 이것을 시도하십시오.
a = ( “s”)
a = a + (1,2,3)
역 추적 (가장 최근 호출 마지막) :
모듈의 파일 stdin, 라인 1
TypeError : ‘str’및 ‘tuple’개체를 연결할 수 없습니다.