Following system colour scheme - Python 增强提案 Selected dark colour scheme - Python 增强提案 Selected light colour scheme - Python 增强提案

Python 增强提案

PEP 559 – 内置 noop()

作者:
Barry Warsaw <barry at python.org>
状态:
已拒绝
类型:
标准跟踪
创建日期:
2017年9月8日
Python 版本:
3.7
发布历史:
2017年9月9日
决议:
Python-Dev 消息

目录

摘要

此 PEP 提议添加一个名为 noop() 的新内置函数,它不做任何事,只返回 None

基本原理

在 Python 中实现一个 no-op 函数非常简单。事实上,它如此容易,以至于许多人一遍又一遍地多次实现它。在许多情况下,有一个通用且不做任何事的内置函数会很有用。

一种用例是针对 PEP 553,您可以在其中将断点环境变量设置为以下内容,以有效地禁用它

$ setenv PYTHONBREAKPOINT=noop

实施

noop() 函数的 Python 等价物恰好是

def noop(*args, **kws):
    return None

C 语言的内置实现可在拉取请求 [1] 中找到。

被拒绝的替代方案

noop() 返回一些东西

YAGNI (你永远不需要它)。

此提议被否决,因为它使语义复杂化。例如,如果您始终同时返回 *args**kws,那么当两者都未给出时,您会返回什么?返回一个元组 ((), {}) 有点难看,但提供了​​一致性。但您也可能只希望返回 None,因为从概念上讲,函数传入的也是这个。

或者,如果您只传入一个位置参数,例如 noop(7)。您是返回 7 还是 ((7,), {})?等等。

作者声称您永远不需要 noop() 的返回值,因此它将始终返回 None

Coghlan 的对话 (已编辑格式)

我对此的反驳是 map(noop, iterable)sorted(iterable, key=noop) 等。(filtermaxmin 都接受接受单个参数的可调用对象,许多 itertools 操作也一样)。

在这些情况下,将 noop() 作为一个有用的默认函数,只需要将定义为

def noop(*args, **kwds):
    return args[0] if args else None

对这个反驳的反驳是,在所有这些情况下使用 None 作为默认值将更快,因为它允许算法完全跳过回调,而不是调用它并让它什么也不做。

参考资料


来源:https://github.com/python/peps/blob/main/peps/pep-0559.rst

最后修改:2025-02-01 08:55:40 GMT