에서 '거짓''진정한'나는이 코드 조각 실행 시도 파이썬
path = '/bla/bla/bla'
if path is True:
print "True"
else:
print "False"
을 그리고 그것은 거짓를 인쇄합니다. 나는 파이썬이 값이있는 어떤 것이라도 을으로 취급한다고 생각했다. 왜 이런 일이 일어나는 걸까요?
에서 '거짓''진정한'나는이 코드 조각 실행 시도 파이썬
path = '/bla/bla/bla'
if path is True:
print "True"
else:
print "False"
을 그리고 그것은 거짓를 인쇄합니다. 나는 파이썬이 값이있는 어떤 것이라도 을으로 취급한다고 생각했다. 왜 이런 일이 일어나는 걸까요?
: 부울 연산의 맥락에서
및 표현은 제어 흐름 문에서 사용하는 경우에도, 다음 값은 false로 해석됩니다 : 없음, 숫자 영, 거짓 빈 문자열 및 컨테이너 (문자열, 튜플, 목록, 사전, 집합 및 frozensets 포함). 다른 모든 값은 true로 해석됩니다.
난 당신이 "거짓으로 해석"또는 "true로 해석"되는 오해하는 생각 여기서 중요한 말씨. 그렇다고이 값이 True 또는 False와 같거나 True 또는 False와 같지 않다는 것을 의미하지는 않습니다.
표현 '/bla/bla/bla'
은 부울 표현식 (AN if
문처럼) 예상되는 경우 true로 처리됩니다,하지만 표현 '/bla/bla/bla' is True
및 '/bla/bla/bla' == True
는 이그나시오의 대답에 이유 False로 평가합니다.
is
은 신원을 비교합니다. 문자열은 not-string과 동일하지 않습니다.
==
은 동일합니다. 그러나 문자열은 True
또는 False
과 같지 않습니다.
원하지 않습니다.
path = '/bla/bla/bla'
if path:
print "True"
else:
print "False"
+1 나는 이것이 오해하는 오해라고 생각합니다. 어쩌면 값을 부울로 "해석"하는 bool 함수가 있음을 알 수 있습니다. 이 함수가 모든'if '에서 암시 적으로 호출된다고 말할 수 있습니다 (기술적 인면에서는 사실이 아닐 수 있지만 적어도 if 문의 동작을 변경하지 마십시오). –