단일 인수로 파이썬 매개 변수 목록을 테스트 할 때 print
과 함께 이상한 동작이 발견되었습니다. 단일 인수가있는 파이썬 매개 변수 목록
>>> def hi(*x):
... print(x)
...
>>> hi()
()
>>> hi(1,2)
(1, 2)
>>> hi(1)
(1,)
어느 한 마지막 쉼표
hi(1)
의 결과에 의미를 나에게 설명 할 수 없습니다 (즉,
(1,)
)
단일 인수로 파이썬 매개 변수 목록을 테스트 할 때 print
과 함께 이상한 동작이 발견되었습니다. 단일 인수가있는 파이썬 매개 변수 목록
>>> def hi(*x):
... print(x)
...
>>> hi()
()
>>> hi(1,2)
(1, 2)
>>> hi(1)
(1,)
어느 한 마지막 쉼표
hi(1)
의 결과에 의미를 나에게 설명 할 수 없습니다 (즉,
(1,)
)
실제로 동작은 조금이다 "이상한." :-)
매개 변수 x
에는 별표가 붙습니다. 즉, 함수에 전달한 모든 인수가 단일 튜플로 "롤업"되고 x
이 해당 튜플이됩니다. 여기
def f(x, *y):
return "x is {} and y is {}".format(x, y)
:
값 (1,)
보다 일반적인 경우 인에게 것 (1)
함께 대조 파이썬 한 값 터플을 기록하는 방법, 인 일부 실행은 다음과 같습니다 : 첫 번째 인수가 x
로 이동하고 이후의 모든 인수가 t에 포장하는 방법
>>> f(1)
'x is 1 and y is()'
>>> f(1, 2)
'x is 1 and y is (2,)'
>>> f(1, 2, 3)
'x is 1 and y is (2, 3)'
>>> f(1, 2, 3, 4)
'x is 1 and y is (2, 3, 4)'
공지 사항 그는 튜플 y
입니다. 파이썬이 0 개 또는 1 개의 구성 요소가있는 터플을 약간 이상하게 표현하는 방법을 발견했을 수도 있지만, (1)
이 숫자 여야한다는 것을 깨닫고 단일 요소 튜플을 나타내는 방법이 있어야합니다. 파이썬은 컨벤션으로 후미 쉼표 만 사용합니다.
'단일 요소 튜플 인쇄 규칙'에 대한 설명을 받아 들였습니다. '(1)'이 숫자 '1'로 해석되는 이유를 설명 할 수 있다면 매우 유쾌합니다. – transang
물론, 일반적으로 괄호는 표현식의 의미를 변경하지 않습니다. 예를 들어 여러분은'4+ (1)'을 말할 수 있고'4 * (2-1)'이 4가되는 것과 같은 방식으로 5가 될 것입니다. 컨벤션은 서브 표현식을 그룹화하기 위해 괄호를 사용하기 때문에 파이썬 그룹핑과 단일 엘리먼트 튜플을 의미하는 의미를 너무 많이 혼란스럽게 만들 것이라고 생각했습니다. 또한 파이썬에는'type' 함수가 있습니다. 사실'type ((2))'은'int'이고'type ((2,))'는'튜플 (tuple) '입니다. '(2)'가 튜플로 취급된다면 어떤 모호성도 존재하지 않기를 바란다. –
자세한 답변을 주셔서 대단히 감사합니다. 방금 [새로운 대답] (http://stackoverflow.com/questions/40710455/why-single-element-tuple-is-interpreted-as-that-element-in-python)을 만들었습니다. 여기에 귀하의 의견에 대한 답변을 링크 해 드리겠습니다. – transang
인쇄 된 값은 내부에 단일 요소가있는 튜플입니다. – Rockybilly