Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 有没有办法将相同的值传递给函数的所有参数?_Python_Python 3.x - Fatal编程技术网

Python 有没有办法将相同的值传递给函数的所有参数?

Python 有没有办法将相同的值传递给函数的所有参数?,python,python-3.x,Python,Python 3.x,我想知道是否有一种方法可以在不知道可用参数的情况下将值传递给函数的所有参数 例如: def SomeFunction(arg1, arg2, arg3): print(arg1) print(arg2) print(arg3) SomeFunction("Hi"**) >> Hi >> Hi >> Hi 本例中的**只是占位符语法。我从来不会让它通过代码审查,但为了好玩,为什么不呢 import inspect SomeFunct

我想知道是否有一种方法可以在不知道可用参数的情况下将值传递给函数的所有参数

例如:

def SomeFunction(arg1, arg2, arg3):
    print(arg1)
    print(arg2)
    print(arg3)

SomeFunction("Hi"**)

>> Hi
>> Hi
>> Hi

本例中的
**
只是占位符语法。

我从来不会让它通过代码审查,但为了好玩,为什么不呢

import inspect
SomeFunction(*["Hi"] * len(inspect.signature(SomeFunction).parameters))
它是如何工作的?让我们把它分解一下

您可以使用
func(*l)
将其转换为单独的参数,如下所示:

>>> SomeFunction(*['Hi', 'Hi', 'Hi'])
Hi
Hi
Hi
重复列表多次

>>> ["Hi"] * 3
['Hi', 'Hi', 'Hi']
>>> SomeFunction(*['Hi'] * 3)
Hi
Hi
Hi
我们如何获得参数的数量,而不是硬编码
3
?答:模块


这是愚蠢的,在只使用关键字args、*args或**kwargs的情况下不会正确失败1.
>>> inspect.signature(SomeFunction)
<Signature (arg1, arg2, arg3)>
>>> inspect.signature(SomeFunction).parameters
mappingproxy(OrderedDict([('arg1', <Parameter "arg1">), ('arg2', <Parameter "arg2">), ('arg3', <Parameter "arg3">)]))
>>> len(inspect.signature(SomeFunction).parameters)
3
>>> ["Hi"] * len(inspect.signature(SomeFunction).parameters)
['Hi', 'Hi', 'Hi']
>>> SomeFunction(*["Hi"] * len(inspect.signature(SomeFunction).parameters))
Hi
Hi
Hi