关于python:为什么需要空函数?

Why are empty functions ever needed?

本问题已经有最佳答案,请猛点这里访问。
1
2
def func():
    pass

有人能描述用例或给出一个在Python中使用空函数的实时示例吗?


空函数定义在任何语言中都同样是无意义或有用的,这里没有特定于Python的内容。您可以在任何情况下编写空函数,从需要一个用于测试的伪函数、用于绘制代码、用于抽象类等等。

这里唯一特别的是python的pass,这只是一个语法要求。在其他语言中,您可以编写function () {},python要求您使用空白和缩进来分隔函数,因此您必须在其中编写一些内容。而不是让每个人都定义自己如何处理这种情况的惯例,pass是存在的。


有争议的是,它们是否"需要",尽管它们很方便。

但是,我认为大多数人都同意需要pass语句,并且需要函数定义,而python不需要的是一个特殊情况,它会阻止您将pass用作函数中唯一的语句。


我们可以制作空函数来勾画出一个算法的高级概述,然后在后面进行各种函数的工作;基本上是一个占位符。


这是我的一个项目的一个真实例子。

该项目允许用户配置任意操作,这些操作可以传递到程序的各个部分,因此它们可以触发对特定事件的自定义响应。

用户可能对某些事件也没有兴趣。然而,指定一个动作是强制性的,否则整个项目中每一个动作的单独使用都必须测试None,这很容易出错)。

因此,DoNothing作用:

1
2
3
class DoNothing(Action):
    async def __call__(self, context=None):
        pass

(如果动作是简单的函数,它只不过是def DoNothing(): pass,但是我的动作有其他方法,不需要重写这些方法)。