programing

파이썬에서 '참'과 '거짓'

sourcetip 2021. 1. 16. 11:18
반응형

파이썬에서 '참'과 '거짓'


이 코드를 실행 해 보았습니다.

path = '/bla/bla/bla'

if path is True:
    print "True"
else:
    print "False"

그리고 그것은 False를 인쇄합니다 . 파이썬은 값이있는 모든 것을 True 로 취급한다고 생각했습니다 . 왜 이런 일이 발생합니까?


6.11 부터 . 부울 연산 :

부울 연산의 컨텍스트에서 그리고 제어 흐름 문에서식이 사용되는 경우 다음 값이 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")

출처 :

  1. Python 진실 값 테스트는 훌륭합니다
  2. 진실 값 테스트 ( 내장 유형 )

참조 URL : https://stackoverflow.com/questions/5119709/true-and-false-in-python

반응형