Python中的Pass和None有什么区别

What is the difference between Pass and None in Python

我个人想知道使用 Pass 和 None 之间的语义差异。我无法在执行中找到任何差异。

PS:我无法在 SO 中找到任何类似的问题。如果你找到了,请指出来。

谢谢!

简单来说,None 是一个可以分配给表示空的变量的值。它可以用作默认状态:

a = None
def f():
   a = 5
f()

pass 是一个类似于 nop 的语句。它在定义函数存根时很有用,例如:

def f():
    pass

在类 C 语言中,您可以通过简单地在大括号之间不放置任何内容来定义空函数 void f() { },但是由于 Python 使用缩进而不是大括号来定义块,您必须把 something 放在正文中,pass 是放在那里的惯用语。

这是 passNone

之间的绝对区别

pass(不带大写P):

因为python是缩进的基础语言,所以如果你定义了一个新的方法,你应该在之后有一些代码。

def method_a():
    some_thing = 1  # Have to do some thing

如果不是,则应引发异常,以便您可以使用 pass 关键字来解决此问题。

def method_a():
    pass  # Do nothing

None:

非常不同,None 关键字与 Java 或 C 等其他语言的 null 关键字有点相同。这可能是空数据或未分配这样的数据。

[] == None
null == None
() == None
...

pass 是一个 语句 。因此它可以在任何地方使用,一个语句可以什么都不做。

None is an atom 以及最简单形式的 表达式 。它也是“无”的关键字和常量值(NoneType 的唯一实例)。因为它是一个表达式,所以它在任何需要表达式的地方都是有效的。

通常,pass用于表示空函数体,如下例所示:

def foo():
    pass

这个函数什么都不做,因为它唯一的语句是无操作语句pass

因为表达式也是一个有效的函数体,你也可以这样写 None:

def foo():
    None

虽然函数的行为相同,但还是有一点不同,因为表达式(常量)仍将被计算(尽管立即被丢弃)。