Python:如何测试命名空间中是否存在潜在的变量名?

Python:如何测试命名空间中是否存在潜在的变量名?,python,namespaces,Python,Namespaces,如何测试潜在变量名列表中的哪些元素在名称空间中?我是否应该将它们初始化为“无”,或者它们是更好的方式 # Potential list. Won't work, will give NameError if one of them is not in the namespace all_vars = [rds.rclass, \ rds.rlevel, \ rds.seg \] # the list is actually much longer #

如何测试潜在变量名列表中的哪些元素在名称空间中?我是否应该将它们初始化为“无”,或者它们是更好的方式

# Potential list. Won't work, will give NameError if one of them is not in the namespace
all_vars = [rds.rclass, \
           rds.rlevel, \
           rds.seg \] # the list is actually much longer

#Could do:
all_vars =[]
try:
   all_vars.append(rds.rclass)
except NameError:
   pass
....

#or as initially said:
rds.rclass = rds.rlevel = ... = None

还有别的(更好的)办法吗

太可怕了,但这应该行得通:

all_vars = locals().get('all_vars', [])

你为什么需要这个?通常地你应该已经知道一个对象是否具有你所需要的属性。它是一个相当复杂的程序,有很多类和用户选择,所以我认为最终检查哪些变量存在比跟踪它们更容易。几乎可以肯定的是,以一种使这种检查变得不必要的方式进行重构更好。好的,我想我明白你的意思了。我听不懂你的要求。您要检查哪个名称空间,rds还是局部名称空间?