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还是局部名称空间?