그들은 둘 다 평가합니다 False
그러나 이것이 그들이 같은 것을 의미하지는 않습니다.
None
별도의 값이며 자체 유형이 있습니다. 빈 문자열은 내용이없는 문자열입니다.
>>> type(None)
<type 'NoneType'>
>>> type('')
<type 'str'>
>>> bool(None) == bool('')
True
>>> None == ''
False
문제
나는 Python과 Coding을 비교적 처음으로 사용합니다. "None"을 만나기 전까지는 잘 지내고 있습니다.
variable = None
while variable != "":
print("Why does this loop start?")
단순 해 보이지만 위의 루프가 왜 시작되는지 이해할 수 없습니다. 어때 None
빈 줄과는 다릅니 까? 나는 그들이 둘 다 거짓으로 평가했다고 생각했다.
해결책
그들은 둘 다 평가합니다 False
그러나 이것이 그들이 같은 것을 의미하지는 않습니다.
None
별도의 값이며 자체 유형이 있습니다. 빈 문자열은 내용이없는 문자열입니다.
>>> type(None)
<type 'NoneType'>
>>> type('')
<type 'str'>
>>> bool(None) == bool('')
True
>>> None == ''
False
다른 팁
아니, None
단지 같은 것입니다 None
그 자체. 빈 줄은 같은 것이 아닙니다.
>>> None == ""
False
None
'공허함'또는 '적절한'값이 부족한 특수 싱글 톤 값 (파이썬 세션에는 하나의 사본 만 있습니다)입니다. 따라서 그것은 a입니다 깃발 또는 신호 값; Python은 컨벤션별로이를 사용하여 프로세스가 예를 들어 아무것도 반환하지 않았다는 신호를 보냅니다.
둘 다 None
빈 문자열은 부울 맥락에서 거짓으로 간주됩니다.
>>> bool(None)
False
>>> bool("")
False
빈 컨테이너 (예 : 빈 튜플, 목록 또는 세트) 및 숫자 0 (정수, 부동 소수점 또는 복소수)과 마찬가지로. 그러나 거짓으로 간주되는 것은 그것들을 동등하게 만드는 것은 아닙니다.
테스트하고 싶다면 어느 거짓 인 값, 사용 :
while not variable:
~처럼 not
오페라를 부울 맥락에서 해석하고 역 값을 반환합니다.
>>> not ""
True
>>> not None
True
>>> not "not empty"
False
둘 다 False로 평가하지만 비교에서 사용될 때 다릅니다.
if not None:
print "Always true"
if not "":
print "Always true"
if bool(None) == bool(""):
print "Always true"
if None == "":
pass
#always false