[英]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
。
只有None
是None
。 我認為您正在尋找的是空list
, dict
和str
的布爾值
例如:
>>> 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.