if语句中声明变量,一个Python反模式?

2024-04-25 18:20:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我们在工作中讨论了以下Python代码(可能是反模式):

if conditional_variable_:
    a = "Some value"
print a

定义了Supose conditional_variable,但没有定义a变量

问题是使用一个变量而不声明它。变量a是在一段代码中创建的,它可能永远不会被执行,但它被使用了。在

也许这个修复可以修复反模式:

^{pr2}$

在这种情况下,a变量是在使用它之前定义的。将print a看作是a变量的usage。在


Tags: 代码声明if定义value模式情况usage
1条回答
网友
1楼 · 发布于 2024-04-25 18:20:59

这不是反模式。这是一个错误。在

Python没有“声明”,只有binding operations;名称要么是绑定的,要么不是绑定的。尝试访问尚未绑定到的名称会导致异常。在

除非您的代码专门处理异常并且期望它,否则遇到NameError或{}异常应该被视为一个bug。在

换言之,尝试引用名称的代码应该始终遵循绑定该名称的相同条件,应准备好处理如果这些条件不总是成立将引发的异常。在if语句之外给变量一个默认值意味着它是在all的情况下绑定的,因此您也可以始终引用它。在

相关问题 更多 >