检查变量是否在python中定义的简单方法?

gri*_*yvp 35 python

有没有办法检查是否定义了具有指定名称的变量(类成员或独立)?例:

if "myVar" in myObject.__dict__ : # not an easy way
  print myObject.myVar
else
  print "not defined"
Run Code Online (Sandbox Code Playgroud)

Mil*_*les 29

紧凑的方式:

print myObject.myVar if hasattr(myObject, 'myVar') else 'not defined'
Run Code Online (Sandbox Code Playgroud)

不过,htw的方式更像是Pythonic.

hasattr()x in y.__dict__但不同之处在于:hasattr()将继承的类属性考虑在内,以及从中返回动态的属性__getattr__,而y.__dict__只包含那些作为y实例属性的对象.

  • 是的,很有可能。那么全局变量呢?(在模块中声明,而不在类名称空间中声明)? (2认同)

hbw*_*hbw 22

try:
    print myObject.myVar
except NameError:
    print "not defined"
Run Code Online (Sandbox Code Playgroud)

  • 如果定义了myObject,但没有'myVar',则会得到一个AttributeError. (16认同)

phy*_*ael 10

Paolo是对的,如果需要的话,可能会有一些关于你做事的方式.但是如果你只是做一些快速而又肮脏的事情,你可能并不关心习惯性的Python,那么这可能会更短.

try: x
except: print "var doesn't exist"
Run Code Online (Sandbox Code Playgroud)


小智 6

要测试变量myvar是否已定义:

result = dir().count('myvar')
Run Code Online (Sandbox Code Playgroud)

如果定义了myvar,则结果为1,否则为0

在Python版本3.1.2中可以正常工作。

  • 那么,为什么不只是在dir()中使用“ myvar”呢? (3认同)