似乎pass只是一个不需要的保留词.Python可以使用具有单行None语句的约定来完成同样的事情.
例如,我看到之间的差别很小
while doing_a_thing():
pass
Run Code Online (Sandbox Code Playgroud)
和
while doing_a_thing():
None
Run Code Online (Sandbox Code Playgroud)
我想它的pass可读性稍微高一点,但在我看来,从功能/变量的选择中删除这样一个常用词是一个很糟糕的权衡.
只是想知道是否有人知道更多我不知道的历史和/或Python使用情况.
我要在这里顺带一下罗里。
None是一个值,而pass是一个语句。
例如,如果你想要一个函数的默认值,你会这样做
def my_func(val1, val2=None):
# Some stuff here
Run Code Online (Sandbox Code Playgroud)
其中None用来表示默认值为val2None。
但是,如果您有课程,您可能会看到pass这样的情况:
class MyClass(object):
def __init__(self):
pass
Run Code Online (Sandbox Code Playgroud)
那里pass可能是因为您想稍后定义该__init__方法,或者表示它对类没有任何作用。
不管怎样,pass就是说,“我可以在这里做点什么,但我宁愿不这样做”。并且None是一个实际值,您明确表示“是的,我正在给出这个值None
编辑:
我现在更加了解这种混乱了。
因为你看到了:
class MyClass(object):
def __init__(self):
pass
Run Code Online (Sandbox Code Playgroud)
可以写成
class MyClass(object):
def __init__(self):
None
Run Code Online (Sandbox Code Playgroud)
这不是 Python 的说法,None相当于pass这里。简单地说,仅提供 avalue作为无操作,将具有相同的效果。这意味着我也可以这样做:
class MyClass(object):
def __init__(self):
12
Run Code Online (Sandbox Code Playgroud)
这当然没有意义,你为什么要把它放在12那里?这里的要点是,效果是相同的,但在这种情况下含义不同。在很多情况下None和pass是不可互换的,例如默认参数