我有一些像这样的 python 代码:
try:
bob = bob_module.Bob('alpha')
except Exception as e:
print 'Alpha mode failed for bob: ' + str(e) + ').'
try:
if bob:
bob.add('Beta')
else:
bob = bob_module.Bob('Beta')
except Exception as e:
print 'Beta mode failed for bob: ' + str(e) + ').'
当此代码运行 Alpha 模式时失败,这是可以理解的原因(与 alpha 服务器的交互失败)。但是,测试模式因“未定义名称‘bob’”而失败。
当然,如果名称 bob
没有定义,那么 if bob
等于 false,我们进入 else
子句并运行 Bob
构造函数将结果赋值给变量 bob
?
我现在无法调试它,因为导致 Alpha 模式失败的错误是暂时的,现在已经消失了,但我想了解这一点有两个原因:求知欲,以及让我的代码在 alpha 模式启动时健壮再次失败。
最佳答案
Surely if name bob is not defined then if bob equates to false
没有。如果未定义 bob
,则尝试使用它是错误的。
将 bob = None
放在文件的顶部,以确保它在所有代码路径中都有定义。
关于Python 名称未定义但计算结果为真。如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44754848/