답변:
빈 튜플을 제외한 모든 경우에 쉼표가 중요합니다. 괄호는 다른 구문상의 이유로 필요한 경우에만 필요합니다. 즉, 튜플을 함수 인수 집합, 연산자 우선 순위에서 구별하거나 줄 바꿈을 허용하기 위해 필요합니다.
튜플, 목록 또는 함수 인수의 후행 쉼표는 특히 여러 줄로 분할 된 긴 초기화가있는 경우 좋은 스타일입니다. 항상 후행 쉼표를 포함하면 다른 요소를 추가하고 대신 유효한 표현식을 생성하기 위해 끝에 다른 줄을 추가하지 않습니다.
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,
줄에 하나씩 사용하는 데 유용하며 새 항목을 추가 할 때 쉼표를 처리하지 않습니다.
후행 쉼표의 또 다른 장점은 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,
]
선택 사항 입니다 . Python wiki를 참조하세요 .
요약 : 단일 요소 튜플 에는 후행 쉼표가 필요 하지만 다중 요소 튜플 의 경우 선택 사항 입니다.
이것이 존재하는 또 다른 이유는 코드 생성과 __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)
후행 쉼표가 허용되지 않는 경우 마지막 인수를 특수하게 사용해야합니다. 사실, 목록 이해력을 사용하여 위의 내용을 한 줄로 작성할 수 있습니다 (읽기 쉽도록 더 길게 작성했습니다). 마지막 학기에 특별한 경우가 있었다면 그렇게하는 것이 그렇게 쉽지 않을 것입니다.
join
이 경우 에만 사용할 수 있습니다 def __repr__(self): 'obj(' + ', '.join([repr(arg) for arg in obj.args]) + ')'
..
join
.
PEP 8-Python 코드 스타일 가이드-후행 쉼표를 사용하는 경우
후행 쉼표는 일반적으로 선택 사항이지만 한 요소의 튜플을 만들 때 필수 사항이라는 점을 제외하면 (파이썬 2에서는 print 문에 대한 의미를 가지고 있습니다). 명확성을 위해 후자를 (기술적으로 중복 된) 괄호로 묶는 것이 좋습니다.
예:
FILES = ('setup.cfg',)
좋아요,하지만 혼란 스럽습니다.
FILES = 'setup.cfg',
후행 쉼표가 중복되는 경우 값, 인수 또는 가져온 항목 목록이 시간이 지남에 따라 확장 될 것으로 예상되는 경우 버전 제어 시스템을 사용할 때 유용합니다. 패턴은 각 값 (등)을 한 줄에 단독으로 놓고 항상 후행 쉼표를 추가하고 다음 줄에 닫는 괄호 / 대괄호 / 중괄호를 추가하는 것입니다. 그러나 닫는 구분 기호와 같은 줄에 후행 쉼표를 사용하는 것은 의미가 없습니다 (위의 싱글 톤 튜플의 경우 제외).
예:
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는 숫자 일뿐입니다.