튜플 정의에서 후행 쉼표를 사용하는 구문 규칙은 무엇입니까?
단일 요소 튜플의 경우 후행 쉼표가 필요합니다.
a = ('foo',)
여러 요소가 있는 튜플은 어떻습니까?후행 쉼표가 존재하든 존재하지 않든 둘 다 유효한 것 같습니다.이거 맞는건가요?내 생각에는 뒤에 오는 쉼표가 더 편집하기 쉽습니다.코딩 스타일이 나쁜 건가요?
a = ('foo1', 'foo2')
b = ('foo1', 'foo2',)
단일 항목 튜플에 대해서만 튜플이나 괄호로 둘러싸인 표현식을 정의하는 것이 필요합니다.
(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,
)
이는 튜플 뿐만 아니라 다른 컬렉션(예: 목록 및 사전)에도 적용됩니다.
빈 튜플을 제외한 모든 경우에 쉼표가 중요합니다.함수 인수 집합, 연산자 우선 순위 또는 줄 바꿈 허용 등의 다른 통사적인 이유로 필요한 경우에만 괄호가 필요합니다.
튜플, 목록 또는 함수 인수의 후행 쉼표는 특히 여러 줄로 분할된 긴 초기화가 있는 경우 좋은 스타일입니다.항상 뒤로 오는 쉼표를 포함하는 경우 끝에 다른 요소를 추가할 것으로 예상되는 다른 선을 추가하지 않고 대신 유효한 식을 만듭니다.
a = [
"a",
"b"
"c"
]
그것이 나중에 확장된 2가지 요소 목록으로 시작되었다고 가정하면 아마도 즉시 명백하지 않은 방식으로 잘못되었을 것입니다.항상 뒤로 오는 쉼표를 포함하면 해당 트랩을 피할 수 있습니다.
후행 쉼표의 또 다른 장점은 diffs를 더 멋지게 보이게 한다는 것입니다.처음부터 시작했다면.
a = [
1,
2,
3
]
로 바꿨습니다.
a = [
1,
2,
3,
4
]
그 차이는 다음과 같습니다.
a = [
1,
2,
- 3
+ 3,
+ 4
]
반면에 당신이 뒤로 오는 쉼표로 시작했다면,
a = [
1,
2,
3,
]
그럼 다른 건 그냥
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",)
하나의 원소를 가진 튜플입니다.
Python은 문자열과 튜플을 구분하기 위해 하나의 요소 튜플의 경우 쉼표가 추가로 필요합니다.
예를 들어 python console에서 시도해 보십시오.
a = ("s")
a = a + (1,2,3)
Traceback (most recent call last):
File stdin, line 1, in module
TypeError: cannot concatenate 'str' and 'tuple' objects
단일 요소 튜플에 대해서만 후행 쉼표가 필요합니다.더 큰 튜플에 대한 후행 쉼표를 갖는 것은 스타일의 문제이므로 필요하지 않습니다.가장 큰 장점은 종종 수정되는 여러 줄의 큰 튜플(예: 구성 튜플)이 있는 깨끗한 diffon 파일입니다.
이것이 존재하는 또 다른 이유는 코드 생성을 하기 때문입니다.__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)
후행 쉼표가 허용되지 않으면 마지막 인수를 특수한 경우에 사용해야 합니다.실제로 목록 이해력을 사용하여 위의 내용을 한 줄로 쓸 수 있습니다(읽기 쉽도록 더 길게 적었습니다).마지막 학기에 특별한 경우를 해야 한다면 그렇게 하기가 쉽지 않을 것입니다.
PEP 8 - Python 코드 스타일 안내 - 후행 쉼표 사용 시기
한 요소로 튜플을 만들 때 필수적인 경우를 제외하고는 후행 쉼표는 일반적으로 선택 사항입니다(Python 2에서는 인쇄 문에 대한 의미론이 있습니다).명확한 설명을 위해 후자를 (기술적으로 중복된) 괄호 안에 둘러싸는 것이 좋습니다.
예:
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는 숫자에 불과합니다.
언급URL : https://stackoverflow.com/questions/7992559/what-is-the-syntax-rule-for-having-trailing-commas-in-tuple-definitions
'programing' 카테고리의 다른 글
__attribute__가 선언의 모든 변수에 적용됩니까? (0) | 2023.10.29 |
---|---|
mysql에서 트리거를 작성하려고 할 때 구문 오류 (0) | 2023.10.29 |
moment.js는 올바른 함수가 제대로 작동하지 않습니다. (0) | 2023.10.29 |
MariaDB 10.1 도커 충돌 InnoDB (0) | 2023.10.24 |
각진 것JS 기능 반응형 프로그래밍? (0) | 2023.10.24 |