“pass”语句的目的是什么?

2024-03-28 19:31:29 发布

您现在位置:Python中文网/ 问答频道 /正文

似乎pass只是一个不需要的保留字。Python可以使用一个单行None语句来完成相同的任务。在

例如,我认为

while doing_a_thing():
   pass

以及

^{2}$

我认为拥有pass稍微更具可读性,但在我看来,这是一个很差的权衡,与从函数/变量的选择中删除这样一个常用词相比。在

只是想知道是否有人知道更多我不知道的历史和/或Python用法。在


Tags: 函数none用法pass语句历史可读性thing
2条回答

我要在这里把罗里背回去。在

None是一个值,而pass是一个语句。在

例如,如果你想要一个函数的默认值

def my_func(val1, val2=None):
    # Some stuff here

其中None用于表示val2的默认值为None。在

但是,如果您有一个类,您可能会这样看到pass

^{pr2}$

其中pass可能存在,因为您希望稍后定义__init__方法,或者表示它对类没有任何作用。在

不管怎样,pass就是说,“我可以在这里做点什么,但我不想做”。并且None是一个实际值,您明确地表示“是,我给这个值None

编辑:
我现在明白了更多的困惑。在

因为你看到了:

^{pr2}$

可以写成

class MyClass(object):
    def __init__(self):
        None

这不是Python说None在这里等同于pass。简单地说,只提供一个value作为no-op,也会产生同样的效果。我也可以这样做:

class MyClass(object):
    def __init__(self):
        12

这当然没有道理,你为什么要把12放在那里?这里的重点是效果是一样的,但是在这个例子中含义是不同的。在很多情况下,None和{}不能互换,比如默认参数

None在Python中已经有了含义。它不是一个语句,而是a value。它可以用来标记还没有标准值的变量,或者作为不返回任何内容的函数的“返回值”。在

因此,使用它作为语句比使用新关键字pass更令人困惑。在

相关问题 更多 >