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】:这就是pass
和None
之间的绝对区别
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有啥区别的主要内容,如果未能解决你的问题,请参考以下文章