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)