我正在使用Python进行一些函数式编程,如果我有一个函数可以使用任意数量的参数但没有做任何事情,那么它将非常有用,可以用作一些事情的默认值。我想知道是否有人知道一个人的存在,或者我怎么能自己制作一个。
看到回复后编辑:另外,我是python的新手,所以对异国语法的任何细化都会非常有用。星星是什么意思?
答案 0 :(得分:12)
创建自己的:
def noop(*args, **kw): pass
这会占用任意数量的位置和关键字参数,并且什么都不做。 pass
signifies an empty python block;它适用于Python期望block
的任何地方,包括循环,if
语句和try
语句。
Python callables总是返回某事(这是语言要求);如果没有给出显式返回值,则返回None
。
*
和**
表示任意长度参数;您可以传入0个或更多位置参数,args
名称将表示它们的元组,以及0个或更多关键字参数,并且它们将在kw
字典中捕获。
来自function definition documentation:
如果存在“
*identifier
”形式,则将其初始化为接收任何多余位置参数的元组,默认为空元组。如果表单“**identifier
”存在,则会将其初始化为接收任何多余关键字参数的新字典,默认为新的空字典。
*
和**
参数的简单演示:
>>> 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')