在python中,我有这样的代码:
def var(a=1, b=2, c=3):
return a, b, c
运行它会产生这样的结果:
>>> import Test
>>> Test.var()
(1, 2, 3)
在这种情况下,1,2和3是我想要使用的默认值。偶尔,我希望能够修改所有或部分变量。但是,因为我有许多可能的var()语句具有不同的默认值和默认值。它们可以是var(a = 1,b = 2,c = 3)或var(d = 1,e = 2,f = 3,g = 4)或var(h = 0)等等。
我想通过我可以从命令行提供的单个变量修改这些变量,如下所示:
>>> arguments = 'a=0, b=5, c=7'
但这不起作用。
>>> Test.var(arguments)
('a=0, b=5, c=7', 2, 3)
它解释了'论证'变量只是' a'而b和c保持不变。我怎样才能提出我的论据?变量是由def语句按字面读取的吗?
答案 0 :(得分:2)
你可以unpack a tuple or a dictionary into arguments。这意味着以下所有条件都相同:
keyword_arguments = {'a':0, 'b':5, 'c':7}
positional_arguments = (0, 5, 7)
Test.var(0, 5, 7)
Test.var(a=0, b=5, c=7)
Test.var(*positional_arguments)
Test.var(**keyword_arguments)
答案 1 :(得分:0)
您可以使用您用作函数参数的列表或字典:
>>> arglist = [5,6,7]
>>> var(*arglist)
(5, 6, 7)
>>> argdict = {'b':4,'a':3, 'c':5}
>>> var(**argdict)
(3, 4, 5)