关于python:如何说”if var:”即使”var”根本不存在?

How to say “if var:” even if “var” does not exist at all?

本问题已经有最佳答案,请猛点这里访问。

这样做很好:

1
2
3
a = 1
if a:
  b = a

但这不起作用:

1
2
if a:
  b = a

如果我们明确地说..

1
"if a exists"

为什么会出错?如果它不存在,那么就不要在if语句的参数内做任何事情。

更新

结果是,"如果"是指……如果"的值在python中表示。

我在寻找"如果A存在,那么继续前进"的等价性。


您可以使用locals()

1
2
if 'a' in locals():
    # variable 'a' is defined

您还可以使用python的原则,即请求原谅比请求允许更容易:

1
2
3
4
5
try:
    b
    # if we get here, variable 'b' is defined
except NameError:
    # variable 'b' is not defined

如文件所述:

Easier to ask for forgiveness than permission. This common Python coding style assumes the existence of valid keys or attributes and catches exceptions if the assumption proves false. This clean and fast style is characterized by the presence of many try and except statements.


当一个名称不存在时(还没有绑定到,因此没有赋值将值绑定到它,不存在将导入的对象分配给该名称的import语句,并且不存在函数参数),则python抛出异常。

您可以处理该异常;全局名称抛出NameError,本地名称抛出UnboundLocalError。用try...except语句捕获异常也可以告诉您是否未引发异常:

1
2
3
4
5
6
try:
    somename
except NameError:
    # name does not exist
else:
    # name exists

请参阅执行模型文档,了解名称是否存在。