문제

나는 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
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top