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

MYV*_*MYV 0 python functional-programming

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

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

Mar*_*ers 12

创建自己的:

def noop(*args, **kw): pass
Run Code Online (Sandbox Code Playgroud)

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

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

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

功能定义文档:

如果存在形式" *identifier",则将其初始化为接收任何多余位置参数的元组,默认为空元组.如果表单" **identifier"存在,则将其初始化为接收任何多余关键字参数的新字典,默认为新的空字典.

简单的演示***参数:

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

对于函数式编程,如果需要返回参数,需要考虑需要返回的内容; 单参数函数只返回该参数,对于任何需要获取2个或更多参数并返回所有参数的东西,您必须将这些参数作为元组返回:

def identity(arg): return arg

def plural_identity(*args): return args
Run Code Online (Sandbox Code Playgroud)

演示:

>>> identity('foobar')
'foobar'
>>> plural_identity('spam', 'eggs')
('spam', 'eggs')
Run Code Online (Sandbox Code Playgroud)