在Python中如何简单检查变量是否已定义?

53 投票
5 回答
82659 浏览
提问于 2025-04-15 11:08

有没有办法检查一个指定名称的变量(无论是类里的成员变量还是独立的变量)是否已经定义?比如:

if "myVar" in myObject.__dict__ : # not an easy way
  print myObject.myVar
else
  print "not defined"

5 个回答

11

Paolo说得对,如果你需要这样做,可能说明你的做法有些问题。不过如果你只是想快速搞定一些事情,可能也不太在乎什么是地道的Python写法,那么这样做可能会更简洁。

try: x
except: print "var doesn't exist"
25

在编程中,有时候我们会遇到一些问题,特别是在使用某些工具或库的时候。比如,有人可能在使用一个特定的库时,发现它的功能和自己想要的有些不一样。这时候,我们就需要去查找资料,看看有没有其他人遇到过类似的问题,或者有没有解决方案。

在这个过程中,StackOverflow是一个很好的资源。它是一个程序员社区,大家可以在这里提问和回答问题。你可以搜索你遇到的问题,看看有没有人已经讨论过,或者直接发帖询问。通常会有很多热心的程序员来帮助你。

总之,遇到问题时,不要害怕去寻求帮助,利用好这些资源,可以让你更快地解决问题,提升自己的编程能力。

try:
    print myObject.myVar
except NameError:
    print "not defined"
30

一种简洁的方法:

print myObject.myVar if hasattr(myObject, 'myVar') else 'not defined'

不过,htw的方法更符合Python的风格。

hasattr()x in y.__dict__是有区别的:hasattr()会考虑到继承的类属性,以及从__getattr__返回的动态属性,而y.__dict__只包含y实例的那些属性对象。

撰写回答