Python 是否按数组中的对象引用特定参数?

Python 是否按数组中的对象引用特定参数?,python,parameters,expression,keyword,generalization,Python,Parameters,Expression,Keyword,Generalization,所以我真的不知道这个问题怎么说,或者我肯定我可以用谷歌搜索一下 我有一个功能,例如: def example(parameter1 = "", parameter2 = "", parameter3 =""): print(parameter1) print(parameter2) print(parameter3) 我希望能够,比方说,调用它3次,一次只传入一个参数,比如: example(parameter1 = "Hello") example(parameter

所以我真的不知道这个问题怎么说,或者我肯定我可以用谷歌搜索一下

我有一个功能,例如:

def example(parameter1 = "", parameter2 = "", parameter3 =""):
    print(parameter1)
    print(parameter2)
    print(parameter3)
我希望能够,比方说,调用它3次,一次只传入一个参数,比如:

example(parameter1 = "Hello")
example(parameter2 = "Stack")
example(parameter3 = "Overflow")
但在我的实际代码中,我需要对其进行大量的泛化,并拥有更多的参数,因此我希望能够按照以下思路做一些事情:

paramnames = ['parameter1', 'parameter2', 'parameter3']
parameters = ['Hello', 'Stack', 'Overflow']

for i in range(3):
    example(paramnames[i] = parameters[i])

python中有什么方法可以实现这一点吗?

您要查找的是调用,并使用
*
**
来表示位置参数和命名参数:

paramnames = ['parameter1', 'parameter2', 'parameter3']
parameters = ['Hello', 'Stack', 'Overflow']

for name, value in zip(paramnames, parameters):
    example(**{name: value})

def example(parameter1="", parameter2="", parameter3=""):
    print(parameter1)
    print(parameter2)
    print(parameter3)
请记住,如果未传递参数,它将是默认参数。因此,输出为:

Hello



Stack



Overflow

使用
dict
**
符号:

parameters = {'parameter1': 'Hello',
              'parameter2': 'Stack', 
              'parameter3': 'Overflow'}

for k, v in parameters.items():
    example(**{k: v})

如果您需要保留订单,请使用
OrderedDict

为什么不使用这样的dict:

paramnames = ['parameter1', 'parameter2', 'parameter3']
parameters = ['Hello', 'Stack', 'Overflow']

for i in range(3):
    example({paramnames[i] : parameters[i]})
以及:


如果您想在deffrent代码中使用每个参数,您可以在“k”上进行测试。

有几种方法可以做到这一点

最直接的方法可能是使用字典保存参数,然后使用
示例(**param_dict)
将它们全部传递给函数


一种更“奇特”的方法是使用
functools.partial
来调用预先指定了一些参数的可调用对象。您可以执行类似于
example=partial(example,parameter1=“hello”)
的操作来添加参数,然后在最后调用
example()
。如果参数来自许多不同的地方,并且您需要将函数及其参数保留一段时间,例如在回调中,这种方法可能会很有用。

这非常完美。非常感谢。
def example(para_dict):
    for k,v in para_dict.items():
        print(v)