我想指出一个什么也不做的函数:
def identity(*args)
return args
我的用例是这样的
try:
gettext.find(...)
...
_ = gettext.gettext
else:
_ = identity
当然,我可以使用上面定义的identity
,但是内置的肯定会运行得更快(并且避免我自己引入的bug)。
显然,map
和filter
使用None
作为标识,但这是特定于它们的实现的。
>>> _=None
>>> _("hello")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'NoneType' object is not callable
发布于 2012-01-06 02:55:51
你的会工作的很好。当参数数量固定时,您可以使用匿名函数,如下所示:
lambda x: x
发布于 2018-06-22 16:01:04
Python中没有内置的标识函数。对Haskell's id
function的模仿将是:
identity = lambda x, *args: (x,) + args if args else x
示例用法:
identity(1)
1
identity(1,2)
(1, 2)
由于identity
除了返回给定的参数之外什么也不做,我不认为它比本机实现慢。
发布于 2019-10-23 21:34:29
如果速度无关紧要,这应该可以处理所有情况:
def identity(*args, **kwargs):
if not args:
if not kwargs:
return None
elif len(kwargs) == 1:
return next(iter(kwargs.values()))
else:
return (*kwargs.values(),)
elif not kwargs:
if len(args) == 1:
return args[0]
else:
return args
else:
return (*args, *kwargs.values())
用法示例:
print(identity())
None
$identity(1)
1
$ identity(1, 2)
(1, 2)
$ identity(1, b=2)
(1, 2)
$ identity(a=1, b=2)
(1, 2)
$ identity(1, 2, c=3)
(1, 2, 3)
https://stackoverflow.com/questions/8748036
复制相似问题