Python中Pass和None的区别是什么?

11

我个人想知道使用“Pass”和“None”之间的语义差异。我在执行中没有发现任何区别。

PS:我在SO上找不到任何类似的问题。如果您找到了,请指出。

谢谢!


只是添加一些细节:方法1和方法2之间的区别是什么:方法1: for i in range(10): if i == 6: None print("hola!!") print(i)方法2: for i in range(10): if i == 6: pass print("hola!!") print(i) - GSAT
3个回答

17

pass是一个语句。因此,可以在需要执行无操作的情况下使用它。

None是一个atom,因此是最简单的表达式形式。它也是一个关键字和一个代表“nothing”的常量值(NoneType的唯一实例)。由于它是一个表达式,所以它在期望任何表达式的地方都是有效的。

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

def foo():
    pass

这个函数什么也不做,因为它唯一的语句是一个空语句pass

由于表达式也是有效的函数体,你也可以使用None来编写这个函数:

def foo():
    None

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


谢谢@poke,这正是我在寻找的确切区别。 - GSAT

3
简单来说,None是一个可以赋给变量的值,表示空。它作为默认状态非常有用:
a = None
def f():
   a = 5
f()

pass是一个类似于nop的语句。它在您定义函数桩时非常有用,例如:

def f():
    pass

在类C的语言中,你可以通过在大括号之间什么都不放来定义空函数void f() { },但是由于Python使用缩进而不是大括号来定义块,所以你必须在主体中放置一些东西,而pass是惯用的放置内容。


哇!这是一段好的解释“在类 C 的语言中,您可以通过简单地在括号之间不放任何内容来定义空函数 void f() { },但由于 Python 使用缩进而不是大括号来定义块,您必须在函数体中放置某些内容,而 pass 是惯用的放置方式。”谢谢。 - Trần Đức Tâm

0

这是关于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
...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接