세 가지 인스턴스 모두에서 볼 수있는 것은 언어 의 문법 사양 과 소스 코드에서 발견 된 토큰을 구문 분석하여 구문 분석 트리를 생성하는 방법의 결과입니다.
이 저수준 코드를 살펴보면 내부에서 일어나는 일을 이해하는 데 도움이 될 것입니다. 이러한 파이썬 문을 가져 와서 바이트 코드로 변환 한 다음 dis
모듈을 사용하여 디 컴파일 할 수 있습니다 .
사례 1 : (0, 0) == 0, 0
>>> dis.dis(compile("(0, 0) == 0, 0", '', 'exec'))
1 0 LOAD_CONST 2 ((0, 0))
3 LOAD_CONST 0 (0)
6 COMPARE_OP 2 (==)
9 LOAD_CONST 0 (0)
12 BUILD_TUPLE 2
15 POP_TOP
16 LOAD_CONST 1 (None)
19 RETURN_VALUE
(0, 0)
먼저 first와 비교 0
되고 False
. 그런 다음 튜플이이 결과와 마지막 0
으로 생성되므로 (False, 0)
.
사례 2 : 0, 0 == (0, 0)
>>> dis.dis(compile("0, 0 == (0, 0)", '', 'exec'))
1 0 LOAD_CONST 0 (0)
3 LOAD_CONST 0 (0)
6 LOAD_CONST 2 ((0, 0))
9 COMPARE_OP 2 (==)
12 BUILD_TUPLE 2
15 POP_TOP
16 LOAD_CONST 1 (None)
19 RETURN_VALUE
튜플은 0
첫 번째 요소로 구성됩니다. 두 번째 요소의 경우 첫 번째 경우와 동일한 검사가 수행되고으로 평가 False
되므로 (0, False)
.
사례 3 : (0, 0) == (0, 0)
>>> dis.dis(compile("(0, 0) == (0, 0)", '', 'exec'))
1 0 LOAD_CONST 2 ((0, 0))
3 LOAD_CONST 3 ((0, 0))
6 COMPARE_OP 2 (==)
9 POP_TOP
10 LOAD_CONST 1 (None)
13 RETURN_VALUE
여기서 보시 (0, 0)
다시피 두 튜플을 비교 하고True
.