Skip to main content
 首页 » 编程设计

python之对象具有值(value)但似乎不存在

2025年05月04日15thcjp

我有以下 Python 代码:

if bedrooms: # bedrooms exists 
    ..... 
else: #  BEDROOMS DOES NOT EXIST  
    bn = "BEDROOMS DOES NOT EXIST" 

我在我的调试器中逐步执行它并注意到即使 bedroom == 0 ,流程也会跳转到 else 语句。

为了测试这个我尝试了:

>>> bedrooms 
0.0 
>>> type(bedrooms) 
<type 'float'> 

谁能解释一下这是怎么回事?

请您参考如下方法:

0 在 Python 中总是计算为 False:

>>> bool(0) 
False 
>>> bool(0.0) 
False 
>>> not 0 
True 
>>> 

因此,这样做:

if 0: 
    ... 
else: 
    ... 

将始终导致执行 else block 。

有关计算结果为 False 的完整列表,请参阅 Truth Value Testing在 Python 文档中。


如果你想检查 bedrooms 是否被定义,那么你可以使用 try/except阻止并捕获 NameError(当您使用不存在的名称时引发):

try: 
    bedrooms 
except NameError: 
    # bedrooms is not defined 

但这引出了一个问题,即为什么您首先需要这样做。如果它涉及动态变量名,那么我想说的是,大多数 Python 程序员认为这些都是不好的做法,应该避免。它们会很快导致维护问题,并且很容易忘记创建的名称。