python - 在检查 if 语句后引用可能不存在的变量是否安全?

标签 python if-statement logic boolean

假设我有一个名为 prop 的成员的 myObject 类。我有一个变量 var,它可能是也可能不是 myObject。我想检查 prop 是否具有某个值,如果是,则执行某些操作;如果没有,或者 var 不是 myObject,则什么都不做。

这样做是否安全:

if isinstance(var, myObject) and var.prop == 10:
    #Do something

基本上,如果第一部分的计算结果为 False,是否保证不会检查 if 语句的第二部分?如果即使 var 不是 myObject 也进行检查,则会抛出错误。

最佳答案

回答你的问题,是的,短路。 But I wouldn't do it that way .更好的方法是使用 hasattrtry, except block 。

if hasattr(var, 'prop') and var.prop == 10:
    print var.prop

或者(如果出现一个 propless var 是不寻常的):

try:
    print var.prop
except AttributeError:
    print "propless var"

关于python - 在检查 if 语句后引用可能不存在的变量是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5132267/

相关文章:

python - Xgboost 中的意外参数 'eval_metric'

python - 如何制作 Sublime Text 2 主题?

python - 如何在 cython 代码中使用 Python Decimal 对象?

c++ - 如果他们的违规代码在 if(false) 中,我是否必须专门化模板

C if 语句被跳过

logic - 组合逻辑公理

python - 将列表转换为元组,然后将此元组添加到 python 列表中

java - 程序似乎无缘无故地循环

ruby-on-rails - 选择附近最佳 field 以在 map 上显示的逻辑

c - 该程序的适当逻辑