加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 在条件语句中声明变量有问题吗?

发布时间:2020-12-20 12:03:22 所属栏目:Python 来源:网络整理
导读:在条件的所有可能分支中重新定义变量之前,它是否可以防止定义变量? 比如应该这个代码: # Condition could fail try: textureIndices = someExpression() # textureIndices is defined here if it does except: textureIndices = [] return textureIndices
在条件的所有可能分支中重新定义变量之前,它是否可以防止定义变量?

比如应该这个代码:

# Condition could fail
    try:
        textureIndices = someExpression()

    # textureIndices is defined here if it does
    except:
        textureIndices = []

    return textureIndices

重写为:

# textureIndices is defined early and then re-defined in the conditional
    textureIndices = None

    try:
        textureIndices = someExpression()


    except:
        textureIndices = 66

    return textureIndices

或者,因为除了打开其他问题,这里的textureIndices的定义是否存在问题:

if condition:
    textureIndices = someExpression()

else:
    textureIndices = 66

return textureIndices

减少问题?

唯一的区别是在第二个版本中textureIndices是在条件之外定义的.

我不明白为什么它很重要因为textureIndices不可能在条件中没有赋值,但我可以看到为什么从管家的角度来看,知道变量被分配给某些东西是件好事.

例如,如果第一个示例中没有except语句,则不会始终定义textureIndices并且返回会导致错误.

但是,如果没有转发定义在条件的两个原因中定义的变量,是否存在问题?

解决方法

一个原因是它创建了冗余代码.在这种情况下,它似乎不是很明显,但举一个例子,你有多个唯一的except语句在代码中捕获多个异常.想象一下,如果有人想重构您的代码或添加其他除语句.

textureIndices = None

try :
    textureIndices = [thing for thing in func()]fail

except InvalidTextException:
    textureIndices = []
    #lines to handle specific exception
except ValueError:
     textureIndices = []
     #lines to handle specific exception
except OSError:
     textureIndices = []
     #lines to handle specific exception

return textureIndices

如果您有多个以这种方式运行的变量,您可以看到它如何快速升级.通过首先声明基本情况,可以减少冗余.

textureIndices = []

try :
    textureIndices = [thing for thing in func()]fail

except InvalidTextException:
    #lines to handle specific exception
except ValueError:
     #lines to handle specific exception
except OSError:
     #lines to handle specific exception

return textureIndices

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读