0

我正在用 Python 进行一些函数式编程,如果我有一个函数可以接受任意数量的参数但不做任何事情,将其用作一些事情的默认值,那将非常有用。我想知道是否有人知道存在一个,或者我如何自己制作一个。

看到回复后编辑:另外,我是 python 新手,所以任何关于异国语法的详细说明都会非常有帮助。星星是什么意思?

4

1 回答 1

12

创建自己的:

def noop(*args, **kw): pass

这需要任意数量的位置和关键字参数,并且什么都不做。pass表示一个空的 python 块;它可以在 Python 期望的任何地方工作block,包括循环、if语句和try语句。

Python callables 总是返回一些东西(这是语言要求);如果没有给出明确的返回值,None则返回。

和表示任意长度参数***您可以传入 0 个或多个位置参数,args名称将代表它们的一个元组,以及 0 个或多个关键字参数,它们被捕获在kw字典中。

函数定义文档

如果“<code>*identifier”形式存在,它被初始化为一个接收任何多余位置参数的元组,默认为空元组。如果存在“<code>**identifier”形式,则将其初始化为接收任何多余关键字参数的新字典,默认为新的空字典。

简单demo***参数:

>>> def f(*args, **kw): return (args, kw)
... 
>>> f('foo', 'bar', spam='eggs', monty='python')
(('foo', 'bar'), {'monty': 'python', 'spam': 'eggs'})

对于函数式编程,如果您需要按原样返回参数,则需要考虑需要返回什么;单参数函数将只返回该参数,对于任何需要接受 2 个或更多参数并将它们全部返回的东西,您必须将这些参数作为元组返回:

def identity(arg): return arg

def plural_identity(*args): return args

演示:

>>> identity('foobar')
'foobar'
>>> plural_identity('spam', 'eggs')
('spam', 'eggs')
于 2013-06-03T20:50:45.623 回答