【发布时间】:2016-07-27 12:28:20
【问题描述】:
我已经为此烦恼了一段时间。
给定这个函数:
def foo(param1, param2, param3):
print 'param1 =', param1
print 'param2 =', param2
print 'param3 =', param3
在 Python 中可以做这样的事情吗?
string1 = 'param1'
string2 = 'param2'
string3 = 'param3'
foo(string1='val1', string2='val2', string3='val3') # Uber magic
还是这样的?
params = {
'param1': 'val1',
'param2': 'val2',
'param3': 'val3'
}
foo(params) # Even ubener magic
所有魔法的结果应该相当于调用
foo(param1='val1', param2='val2', param3='val3')
顺便说一句,我没有兴趣更改功能以支持**kwargs。
提前致谢!
【问题讨论】:
-
我不清楚你想让第二个做什么。你能用语言解释并给出明确的预期输出吗,因为 tl;dr 是的,所有这些事情都是可能的(没有魔法:))
-
这个想法是自动让解释器将 string1 值“param1”识别为函数的 param1 参数,无论我传递 string1、string2 或 string3“参数”的顺序如何。
-
“顺便说一句,我对更改函数以支持
**kwargs不感兴趣” - 函数是否使用**kwargs参数定义与是否可以传递关键字参数无关**kwargs. -
好的,考虑到这一点,我投票决定以 dup 的身份关闭。我有点惊讶这里有这么多没有标志的答案,如果我理解,这个问题似乎在 SO Python normal arguments vs. keyword arguments 上有很多答案
标签: python