我想指出一个什么都不做的函数:

def identity(*args)
    return args

我的用例是这样的

try:
    gettext.find(...)
    ...
    _ = gettext.gettext
else:
    _ = identity

当然,我可以使用上面定义的identity,但内置的肯定会运行得更快(并避免我自己引入的bug).

显然,mapfilter使用None作为标识,但这是特定于它们的实现的.

>>> _=None
>>> _("hello")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable

推荐答案

做了更多的研究,没有,在issue 1673203Raymond Hettinger said there won't be中有一个特征被问到:

最好让人们写下自己的琐碎经历

因此,更好的方法实际上是(lambda避免命名函数):

_ = lambda *args: args
  • 优点:可以使用任意数量的参数
  • 缺点:结果是参数的装箱版本

_ = lambda x: x
  • 优点:不会更改参数的类型
  • 缺点:只接受一个位置参数

Python-3.x相关问答推荐

Python根据阈值对数字进行分组

我可以设置树视图层次 struct 按钮吗?

Python,Web 从交互式图表中抓取数据

转换Pandas 数据框 - 添加行

切片的Python复杂性与元组的星号相结合

如何在 Telethon 中向机器人发送发送表情符号

列出相同索引的Pandas

有没有办法使用重采样矢量化添加缺失的月份?

如何在数据['column']中的'string'等条件下应用pandas

机器学习实验笔记本的工作区 url

如何从 Python 3.5 降级到 Python 3.4

错误:预期语句,发现 py:Dedent

django.core.exceptions.ImproperlyConfigured

Python 异步调试示例

Linux Mint 上的 Python3 错误没有名为蓝牙的模块

如何配置 Atom 以运行 Python3 脚本?

aiohttp+sqlalchemy:在回滚无效事务之前无法重新连接

使用 python2 和 python3 创建一个 virtualenv

在 Keras 中训练神经网络的零精度

在 Meta 中创建具有动态模型的通用序列化程序