是否有一个标准的Python函数,它接受任意数量的参数并且什么都不做?

时间:2013-06-03 20:50:14

标签: python functional-programming

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

看到回复后编辑:另外,我是python的新手,所以对异国语法的任何细化都会非常有用。星星是什么意思?

1 个答案:

答案 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')