【问题标题】:Declaring a variable in an if statement, a Python anti pattern?在 if 语句中声明变量,Python 反模式?
【发布时间】:2016-01-26 09:05:11
【问题描述】:

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

if conditional_variable_:
    a = "Some value"
print a

假设 conditional_variable 已定义但 a 变量未定义。

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

也许该修复可以修复反模式:

a = "default value"
if conditional_variable:
    a = "changed_value"
print a

在这种情况下,a 变量是在使用之前定义的。将print a 视为a 变量的用法。

【问题讨论】:

    标签: python anti-patterns


    【解决方案1】:

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

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

    除非您的代码专门处理异常并预期,否则遇到NameErrorUnboundLocalError 异常应被视为错误。

    换句话说,尝试引用名称的代码应始终遵守绑定名称的相同条件,准备好处理如果这些条件不符合将引发的异常并不总是持有。在if 语句之外给你的变量一个默认值意味着它在所有情况下都是绑定的,所以你也可以总是引用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-12
      • 2014-08-26
      • 2021-12-27
      • 2021-03-04
      • 2013-01-15
      • 2016-01-13
      相关资源
      最近更新 更多