我个人想知道使用Pass和None之间的语义差异。我无法找到任何执行上的差异。
PS:我无法在SO中找到任何类似的问题。如果找到,请指出。
谢谢!
答案 0 :(得分:9)
pass
是声明。因此,它可以在任何地方使用,语句可以用来做任何事情。
None
是一个atom,最简单的形式是表达式。它也是“无”的关键字和常量值(NoneType
的唯一实例)。因为它是一个表达式,所以在每个地方都有一个表达式是有效的。
通常,pass
用于表示空函数体,如下例所示:
def foo():
pass
此函数不执行任何操作,因为它的唯一语句是无操作语句pass
。
由于表达式也是一个有效的函数体,您也可以使用None
:
def foo():
None
虽然函数的行为相同,但它有点不同,因为表达式(虽然常量)仍然会被评估(虽然立即被丢弃)。
答案 1 :(得分:2)
简单来说,None
是一个可以分配给表示空虚的变量的值。它可以作为默认状态使用:
a = None
def f():
a = 5
f()
pass
是一个像nop一样的陈述。在定义函数存根时可能很有用,例如:
def f():
pass
在类C语言中,您可以通过简单地在大括号void f() { }
之间放置任何内容来定义空函数,但是由于Python使用缩进而不是大括号来定义块,所以必须放置某些东西< / em>在正文中,pass
是放在那里的惯用语。
答案 2 :(得分:0)
exampleFunction(new exampleCallback() {
@Override
public void success(String response) {
//custom method implementation
}
@Override
public void error(String error) {
//custom method implementation
}
});
和pass
None
(没有大写字母P):
因为python是缩进基本语言,所以如果你定义一个新方法,那么你应该有一些代码。
pass
如果没有,则应引发异常,以便您可以使用def method_a():
some_thing = 1 # Have to do some thing
关键字解决此问题。
pass
def method_a():
pass # Do nothing
:
非常不同,None
关键字与来自其他语言(如Java或C)的None
关键字略有不同。这可能是空数据,也可能不是这样分配数据。
null