我们在工作中讨论了以下Python代码(可能是反模式):
if conditional_variable_:
a = "Some value"
print a
定义了Supose conditional_variable
,但没有定义a
变量
问题是使用一个变量而不声明它。变量a
是在一段代码中创建的,它可能永远不会被执行,但它被使用了。在
也许这个修复可以修复反模式:
^{pr2}$
在这种情况下,a
变量是在使用它之前定义的。将print a
看作是a
变量的usage。在
Tags:
这不是反模式。这是一个错误。在
Python没有“声明”,只有binding operations;名称要么是绑定的,要么不是绑定的。尝试访问尚未绑定到的名称会导致异常。在
除非您的代码专门处理异常并且期望它,否则遇到}异常应该被视为一个bug。在
NameError
或{换言之,尝试引用名称的代码应该始终遵循绑定该名称的相同条件,或应准备好处理如果这些条件不总是成立将引发的异常。在
if
语句之外给变量一个默认值意味着它是在all的情况下绑定的,因此您也可以始终引用它。在相关问题 更多 >
编程相关推荐