我正在用 Python 进行一些函数式编程,如果我有一个函数可以接受任意数量的参数但不做任何事情,将其用作一些事情的默认值,那将非常有用。我想知道是否有人知道存在一个,或者我如何自己制作一个。
看到回复后编辑:另外,我是 python 新手,所以任何关于异国语法的详细说明都会非常有帮助。星星是什么意思?
我正在用 Python 进行一些函数式编程,如果我有一个函数可以接受任意数量的参数但不做任何事情,将其用作一些事情的默认值,那将非常有用。我想知道是否有人知道存在一个,或者我如何自己制作一个。
看到回复后编辑:另外,我是 python 新手,所以任何关于异国语法的详细说明都会非常有帮助。星星是什么意思?
创建自己的:
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')