簡體   English   中英

Python的問題是無測試?

[英]Problem with Python's is None test?

我喜歡對空變量使用is None測試,它非常靈活,容易和有用。 現在似乎已停止工作:

>"" is None
False

>[] is None
False

>{} is None
False

這是怎么回事?

我在Debian / Sid i686 GNU / Linux上使用Python 2.6.6(r266:84292,2010年12月27日,00:02:40)[GCC 4.4.5]。

編輯:使用bool(“”)的Sven Marnach的出色技巧。 brb,關閉編輯一些代碼...

測試x is None測試,如果x真的 None對象(即,如果該名x引用的對象None )。 您正在尋找的是真值測試

if "":
    print "non-empty"
else:
    print "empty"

if將條件隱式轉換為bool 您還可以顯式地執行此操作:

>>> bool("")
False
>>> bool("x")
True

嗯...那沒用。 is測試實例身份的方法-即使{} is {}也為假。

>>> {} is {}
False

它從來沒有工作過。 只有None is None True

只有NoneNone 我認為您正在尋找的是空listdictstr的布爾值

例如:

>>> if "":
...     print 'woo'
... else:
...     print 'hoo'
...
hoo

{}[]

如果只想檢查空值,最好使用以下方法:

a = {}
b = []
c = ""

if a:
    print 'non-empty dict'
else:
    print 'empty dict'

if b:
    print 'non-empty list'
else:
    print 'empty list'

if c:
    print 'non-empty string/value'
else:
    print 'empty string/value'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM