파이썬에서 '참'과 '거짓'
이 코드를 실행 해 보았습니다.
path = '/bla/bla/bla'
if path is True:
print "True"
else:
print "False"
그리고 그것은 False를 인쇄합니다 . 파이썬은 값이있는 모든 것을 True 로 취급한다고 생각했습니다 . 왜 이런 일이 발생합니까?
부울 연산의 컨텍스트에서 그리고 제어 흐름 문에서식이 사용되는 경우 다음 값이 false로 해석됩니다. False, None, 모든 유형의 숫자 0, 빈 문자열 및 컨테이너 (문자열, 튜플, 목록, 사전 포함) , 세트 및 frozensets). 다른 모든 값은 참으로 해석됩니다.
여기에서 오해하고 있다고 생각하는 핵심 문구는 "거짓으로 해석"또는 "사실로 해석"입니다. 그렇다고 이러한 값이 True 또는 False와 동일하거나 True 또는 False와 동일하다는 의미는 아닙니다.
표현식은 '/bla/bla/bla'
부울 표현식 (AN처럼 예상된다 사실로 취급 될 것이다 if
문)하지만, 표현 '/bla/bla/bla' is True
및 '/bla/bla/bla' == True
이그나시오의 대답에 이유 False로 평가합니다.
is
정체성을 비교합니다. 문자열은 문자열이 아닌 것과 동일하지 않습니다.
==
평등입니다. 그러나 문자열 중 하나와 동일하지 않습니다 True
또는 False
.
둘 다 원하지 않습니다.
path = '/bla/bla/bla'
if path:
print "True"
else:
print "False"
다른 포스터가 왜 그 is True
일을하는지에 대해 언급했지만 , 저는 여러분의 게시물의이 부분에 답하고 싶었습니다.
저는 파이썬이 가치있는 모든 것을 True로 취급한다고 생각했습니다. 왜 이런 일이 발생합니까?
Java에서 왔기 때문에 이것도 걸려 넘어졌습니다. 파이썬은 어떤 값도 True
. 증거:
if 0:
print("Won't get here")
0은으로 처리되기 때문에 아무것도 인쇄하지 않습니다 False
. 실제로 모든 숫자 유형 중 0은로 평가됩니다 False
. 그들은 또한 decimal
당신이 기대하는 방식 으로 일을했습니다.
from decimal import *
from fractions import *
if 0 or 0.0 or 0j or Decimal(0) or Fraction(0, 1):
print("Won't get here")
다음은 평가되는 다른 값입니다 False
.
if None or False or '' or () or [] or {} or set() or range(0):
print("Won't get here")
출처 :
- Python 진실 값 테스트는 훌륭합니다
- 진실 값 테스트 ( 내장 유형 )
참조 URL : https://stackoverflow.com/questions/5119709/true-and-false-in-python
'programing' 카테고리의 다른 글
PHP에서 가중치로 무작위 결과를 생성합니까? (0) | 2021.01.16 |
---|---|
ASP.Net RadioButton 및 CheckBox가 Span 내부에서 렌더링되는 이유는 무엇입니까? (0) | 2021.01.16 |
코드 문제 : 형식 문자열이 문자열 리터럴이 아닙니다. (0) | 2021.01.16 |
문자열이 날짜인지 확인하는 기능 (0) | 2021.01.16 |
* ngFor를 사용하여 객체 키를 반복하는 방법 (0) | 2021.01.16 |