繁体   English   中英

Python中的Pass和None之间有什么区别

[英]What is the difference between Pass and None in Python

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

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

谢谢!

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

None是一个原子 ,因此它是最简单形式的表达 它也是“nothing”的关键字和常量值( NoneType的唯一实例)。 因为它是一个表达式,所以在每个地方都有一个表达式是有效的。

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

def foo():
    pass

此函数不执行任何操作,因为它的唯一语句是无操作语句pass

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

def foo():
    None

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

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

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

pass是一个像nop的声明。 在定义函数存根时,它非常有用,例如:

def f():
    pass

在类C语言中,您可以通过简单地在大括号void f() { }之间放置任何内容来定义空函数,但由于Python使用缩进而不是大括号来定义块,所以必须在主体中放置一些东西 ,然后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
...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM