【问题标题】:Python: How to check if a variable has been already declared [duplicate]Python:如何检查变量是否已被声明[重复]
【发布时间】:2014-03-14 08:29:18
【问题描述】:

在使用许多 if/elif/else 时,如果已经声明了变量,我有时会失去跟踪。我想知道一种简单的方法来检查变量 foo 是否已经被声明。实现这一目标的最简单语法是什么?

附:看看如何使用 globals() 和 locals() 来实现这一点很有趣。

编辑:

我最终使用了:

if not 'myVariableName' in globals().keys(): myVariableName='someValue'

很难跟踪何时何地/如果 app = QtGui.QApplication(sys.argv) 已经被声明,尤其是在一个 gui 模块调用另一个的情况下,反之亦然。

if 'app' in globals()(似乎)有助于避免意外的变量重新声明。

【问题讨论】:

    标签: python variables declaration


    【解决方案1】:
    try:
       foo
    except NameError:
       # does not exist
    else:
       # does exist
    

    【讨论】:

      【解决方案2】:

      与其担心变量是否被声明,不如从一开始就声明所有变量。你可以给变量一些值来表示它还处于初始状态,比如

      foo = None 
      

      或者,如果您想将None用于其他目的,您可以创建一个唯一值来指示初始状态,例如

      INITIAL = object()
      foo = INITIAL
      

      稍后,如果您需要检查变量是否已设置,您可以使用if

      if foo == INITIAL:
      

      我认为这样做的主要优点是

      1. 您永远不会意外引发 NameError。
      2. 在您的代码中将有一个地方存放所有变量 引入,因此您的代码的读者不必想知道什么 变量在起作用。

      顺便说一句,在__init__ 中定义所有实例属性同样是一个好主意,因此实例可能具有哪些属性是毫无疑问的。

      【讨论】:

        猜你喜欢
        • 2018-05-01
        • 2015-09-11
        • 1970-01-01
        • 1970-01-01
        • 2015-08-25
        • 1970-01-01
        • 1970-01-01
        • 2018-10-06
        • 1970-01-01
        相关资源
        最近更新 更多