반응형
파이썬에서 "(1,) == 1"의 의미는 무엇입니까?
튜플 구조를 테스트하고 있는데, 사용할 때 이상하다는 것을 발견했습니다.==
연산자:
>>> (1,) == 1,
Out: (False,)
이 두 식을 변수에 할당하면 결과는 참입니다.
>>> a = (1,)
>>> b = 1,
>>> a==b
Out: True
이 질문은 제가 보기에는 파이썬 튜플 후행 쉼표 구문 규칙과 다릅니다.저는 그들 사이의 표현 그룹에게 물어봅니다.==
교환입니다.
이것은 단지 연산자 우선 순위입니다.너의 첫번째
(1,) == 1,
다음과 같은 그룹:
((1,) == 1),
따라서 하나의 element 튜플을 비교한 결과로부터 단일 요소로 튜플을 만듭니다.1,
정수까지1
평등을 위해서요 평등하지 않아요 그러니 1-튜플을 얻으세요False,
결과적으로
다른 답변에서는 이 동작이 여기에 문서화된 대로 작업자 우선 순위에 기인한다는 것을 이미 보여주었습니다.
다음에 이와 비슷한 질문이 있을 때 직접 답을 찾는 방법을 알려드리겠습니다.다음 모듈을 사용하여 식을 구문 분석하는 방법을 분해할 수 있습니다.
>>> import ast
>>> source_code = '(1,) == 1,'
>>> print(ast.dump(ast.parse(source_code), annotate_fields=False))
Module([Expr(Tuple([Compare(Tuple([Num(1)], Load()), [Eq()], [Num(1)])], Load()))])
이를 통해 팀 피터스가 설명한 대로 코드가 구문 분석됨을 알 수 있습니다.
Module([Expr(
Tuple([
Compare(
Tuple([Num(1)], Load()),
[Eq()],
[Num(1)]
)
], Load())
)])
할때
>>> (1,) == 1,
그것은 튜플을 비교한 결과와 함께 튜플을 만듭니다. (1,)
정수와 함께 따라서 되돌아오는.False
.
대신 변수를 할당할 때 두 개의 동등한 튜플이 서로 비교됩니다.
다음을 시도해 볼 수 있습니다.
>>> x = 1,
>>> x
(1,)
언급URL : https://stackoverflow.com/questions/37313471/whats-the-meaning-of-1-1-in-python
반응형
'programing' 카테고리의 다른 글
스택 오버플로로 인해 세그먼트화 오류가 아닌 다른 문제가 발생할 수 있습니까? (0) | 2023.09.19 |
---|---|
NStimeInterval to HH:mm:ss? (0) | 2023.09.19 |
iPhone vs iPad/Browser HTML5 인라인 비디오 (0) | 2023.09.19 |
element.remove를 호출할 때 $destroy가 트리거되지 않는 이유는 무엇입니까? (0) | 2023.09.19 |
ASP에서 *all* 예외 처리를 사용하지 않도록 설정합니다.NET Web API 2 (나만의 공간을 만들기 위해)? (0) | 2023.09.19 |