我在想是否有一种方法可以在不知道函数参数的情况下将一个值传递给函数的所有参数?
例如:
def SomeFunction(arg1, arg2, arg3):
print(arg1)
print(arg2)
print(arg3)
SomeFunction("Hi"**)
>> Hi
>> Hi
>> Hi
在这种情况下,
**
只是占位符语法。我在想是否有一种方法可以在不知道函数参数的情况下将一个值传递给函数的所有参数?
例如:
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
>>> 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