Python 名称未定义但计算结果为真。如何?

标签 python

我有一些像这样的 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/

相关文章:

python - SciPy 和 App Engine

python - 根据列条件复制和修改 pandas 中的行

java - 如何使用java获取zip中的特殊文件偏移量

python - 神经网络在玩具数据集上失败

python - 对正则表达式输出执行简单的数学运算? (Python)

python - 如何使用 IMAPClient 将电子邮件标志更改为最近

python - 使用 mpmath 在 Python 中进行拉普拉斯逆运算

python - Django 聚合 : Sum return value only?

Python Splinter 单击表条件中的链接

python - 无法在 Python 中加载共享对象文件