반응형
파이썬에서“(1,) == 1”의 의미는 무엇입니까?
튜플 구조를 테스트하고 있는데 ==연산자를 사용할 때 이상하다는 것을 알았습니다 .
>>> (1,) == 1,
Out: (False,)
이 두 표현식을 변수에 할당하면 결과는 true입니다.
>>> a = (1,)
>>> b = 1,
>>> a==b
Out: True
이 질문은 내 관점 에서 파이썬 튜플 후행 쉼표 구문 규칙 과 다릅니다 . ==연산자 사이에 표현 그룹을 요청합니다 .
다른 답변은 이미 설명 된대로 동작, 연산자 우선 순위에 의한 있음을 보여 주었다 여기 .
다음에 이와 비슷한 질문이있을 때 스스로 답을 찾는 방법을 보여 드리겠습니다. ast모듈을 사용하여 표현식이 구문 분석되는 방식을 해체 할 수 있습니다 .
>>> 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()))])
이것으로부터 Tim Peters가 설명한 것처럼 코드가 파싱 되는 것을 볼 수 있습니다 .
Module([Expr(
Tuple([
Compare(
Tuple([Num(1)], Load()),
[Eq()],
[Num(1)]
)
], Load())
)])
이것은 운영자 우선 순위입니다. 너의 첫번째
(1,) == 1,
같은 그룹 :
((1,) == 1),
따라서 단일 요소 튜플 1,을 정수와 정수 의 비교 결과에서 단일 요소로 튜플을 빌드합니다. 1같지 않으므로 False,결과에 대한 1 튜플 을 얻습니다 .
당신이 할 때
>>> (1,) == 1,
튜플 (1,) 을 정수 와 비교하여 결과를 반환 하여 튜플을 빌드합니다 False.
대신 변수에 할당 할 때 두 개의 동일한 튜플 이 서로 비교됩니다.
당신은 시도 할 수 있습니다:
>>> x = 1,
>>> x
(1,)
참고 URL : https://stackoverflow.com/questions/37313471/whats-the-meaning-of-1-1-in-python
반응형
'IT story' 카테고리의 다른 글
| TypeScript에서 싱글 톤을 정의하는 방법 (0) | 2020.07.18 |
|---|---|
| Objective-C에서 NSNumber를 int로 변환하는 방법 (0) | 2020.07.17 |
| R을 사용하여 지정된 확장자를 가진 모든 파일 나열 (0) | 2020.07.17 |
| 커밋시 Intellij IDEA에서 사용하지 않는 가져 오기를 제거하는 방법은 무엇입니까? (0) | 2020.07.17 |
| Matlab에서 함수 매개 변수의 기본값을 어떻게 설정합니까? (0) | 2020.07.17 |