Skip to main content
 首页 » 编程设计

python之使用 `is` 检查空字符串

2025年05月04日20lyj

在 Python 中使用 is 检查空字符串是否正确?它进行身份检查,而 == 测试相等性。

考虑以下(使用 join 的想法是从 this answer 借来的):

>>> ne1 = "aaa" 
>>> ne2 = "".join('a' for _ in range(3)) 
>>> ne1 == ne2 
True 
>>> ne1 is ne2 
False 
>>> 

所以这里的是正如人们所期望的那样工作。现在看看这段代码:

>>> e1 = "" 
>>> e2 = "aaa".replace("a", "") 
>>> e3 = "" * 2 
>>> e4 = "bbb".join(range(0)) 
>>> e1, e2, e3, e4 
('', '', '', '') 
>>> e1 is e2 
True 
>>> e1 is e3 
True 
>>> e1 is e4 
True 
>>> id(e1), id(e2), id(e3), id(e4) 
(35963168, 35963168, 35963168, 35963168) # why? 

请您参考如下方法:

检查空字符串的正确方法是:

if yourstring: 
   print "string is not empty" 

例如如果您的字符串为空,bool(yourstring) 将为 False。您的示例之所以有效,是因为 CPython 缓存了某些字符串和整数并重用它们以提高效率。这是一个实现细节,不应依赖。