似乎pass
只是一个非常需要的保留字。 Python可以使用具有单行None
语句的约定来完成同样的事情。
例如,我发现
之间差别不大while doing_a_thing():
pass
和
while doing_a_thing():
None
我认为让pass
稍微更具可读性,但在我看来,在从函数/变量的选择中删除这样一个常用词是一个很差的交易。
只是想知道是否有人知道更多我不了解的历史和/或Python使用情况。
答案 0 :(得分:7)
None
已经在Python中有意义了。这不是陈述,而是a value。它可用于标记尚未具有标准值的变量,或用作不返回任何内容的函数的“返回值”。
因此,将其用作语句会比使用新关键字pass
更令人困惑。
答案 1 :(得分:4)
我会在这里稍微躲开Rory。
None
是一个值,而pass
是一个声明。
例如,如果您想要一个函数的默认值,那么
def my_func(val1, val2=None):
# Some stuff here
其中None
用于表示默认值val2
为无。
但是,如果您有课程,则可能会以这种方式看到pass
:
class MyClass(object):
def __init__(self):
pass
pass
可能在那里,因为您想稍后定义__init__
方法,或者表示它对该类没有任何作用。
无论哪种方式,pass
都可以说,"我可以在这里做点什么,但我不喜欢"。而None
是一个实际值,您明确表示"是的,我给出了这个值None
编辑:
我现在更了解这种困惑。
因为你看到了:
class MyClass(object):
def __init__(self):
pass
可以写成
class MyClass(object):
def __init__(self):
None
这不是Pythons的说法None
相当于pass
。简单地说,仅提供value
作为无操作,将具有相同的效果。这意味着我也可以这样做:
class MyClass(object):
def __init__(self):
12
这当然没有意义,你为什么要把12
放在那里?这里的要点是效果是相同的,但在这种情况下的含义是不同的。在很多情况下,None
和pass
不可互换,例如默认参数