我有以下代码:
help1 = 14
help2 = "nice"
help3 = "gate"
try:
print('''
help1 %d
help2 %s
help3 %s
help4 %s
''' % (help1, help2, help3, help4))
except (NameError):
print("")
我希望我的print
引用多个变量,其中一些未定义(例如help4
)。如何修改打印语句以跳过所有未定义的变量?我尝试了nameError
异常-但无法使其正常工作。
答案 0 :(得分:1)
您甚至都没有到达print
。您不能引用未定义的变量。这样做会引发NameError
。因此,您甚至可以在创建四个值的元组之前进入NameError
。
(好吧,我想您可以通过10个except NameError:
块链来做一些可怕的事情,这些块经历了所有可能的错误排列,但是…eww…)
如果您确实需要执行以下操作,则必须手动在您认为应位于的命名空间中间接查找名称。例如,如果此代码位于函数内部,并且所有四个变量都应如果是本地人,则可以在本地名称空间中按名称查找它们:
[locals().get(name, 'not found') for name in ('help1', 'help2', 'help3', 'help4')]
对于全局变量或任何其他命名空间也是如此。
但这几乎肯定是一个坏主意。您可能应该在做类似的事情:
答案 1 :(得分:-1)
如果要检查变量是否存在,可以执行
if "var_name" in locals():#or globals()
print(var_name)
但这通常不是一个好方法。