2017-07-18 161 views

回答

8

函数调用中的参数必须是标识符,而不是字符串常量。

出于同样的原因,你可以不写:

"a" = 1 

你也不能调用一个函数

dict("a"=5) 

而是写:

a = 5 
dict(a=5) 

如果您需要从字符串常量创建字典,使用字面语法:

{"a": 5, "b": 17} 

如果你需要使用的变量名,调用函数的字符串,语法是有点怪:

func(**{"a": 5}) # more or less equivalent to func(a=5) 

但要注意的是,.update函数可以调用这种方式开始:

d.update(a=1, b=2) 
2

A 参数必须是标识符a是一个标识符。 'a'不是,它是一个字符串文字(它是表达式的一种形式)。

在Python中,您可以使用两个星号来传递一个名为的名称为参数的字典。所以:

d.update(**{'a': 1, 'b': 2}) 

会工作。但对于这样的字典,这当然是无用的。但是,您可以在运行时构造字典d2,然后调用somefunc(**d2)d2的键作为参数名称,并将相应的值作为与这些参数名称关联的值调用函数。

+0

...但用字典这样做会是单一的毫无意义。 –

+0

@DanielRoseman:当然。我为一个更有用的用例添加了一个简短的描述。 –

相关问题