Python中的Pass和None有啥区别

Posted

技术标签:

【中文标题】Python中的Pass和None有啥区别【英文标题】:What is the difference between Pass and None in PythonPython中的Pass和None有什么区别 【发布时间】:2018-06-06 23:32:22 【问题描述】:

我个人想知道使用 Pass 和 None 之间的语义差异。我在执行上找不到任何区别。

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

谢谢!

【问题讨论】:

只是添加更多细节:方法1和方法2有什么区别:方法1:for i in range(10): if i == 6: None print("hola!!") print(i) method2: for i in range(10): if i == 6: pass print("hola!!") print(i) 【参考方案1】:

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

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

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

def foo():
    pass

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

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

def foo():
    None

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

【讨论】:

谢谢@poke,这正是我正在寻找的差异。【参考方案2】:

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

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

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

def f():
    pass

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

【讨论】:

哇!这是一个很好的解释“在类 C 语言中,您可以通过在大括号 void f() 之间简单地放置任何内容来定义空函数,但是由于 Python 使用缩进而不是大括号来定义块,因此您必须在身体,传球是放在那里的惯用东西。”谢谢。【参考方案3】:

这就是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
...

【讨论】:

以上是关于Python中的Pass和None有啥区别的主要内容,如果未能解决你的问题,请参考以下文章

python中的pass和continue有啥区别[重复]

python中的[None]和[]有啥区别? [复制]

继续并通过:有啥区别?

pass by value和pass by reference在C++中有啥区别?

NaN 和 None 有啥区别?

测试“nil”和“.None”的可选项有啥区别?