在Python中如何简单检查变量是否已定义?
有没有办法检查一个指定名称的变量(无论是类里的成员变量还是独立的变量)是否已经定义?比如:
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
实例的那些属性对象。