programing

파이썬에서 "(1,) == 1"의 의미는 무엇입니까?

lastcode 2023. 9. 19. 21:11
반응형

파이썬에서 "(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

반응형