传递带有破折号的关键字参数
我有一个使用关键字参数的函数:
def f1(**kw):
for key,val in kw.iteritems():
print "key=%s val=%s" % (key,val)
f1(Attr1 = "Val1", Attr2 = "Val2") # works fine.
f1(Attr1-SubAttr = "Val1", Attr2 = "Val2") # complains about keyword being an expression.
f1("Attr1-SubAttr" = "Val1", Attr2 = "Val2") # doesn't work either.
我该怎么传递带有连字符的关键字呢?我无法控制这些关键字,因为我是从一个旧的数据库中解析出来的。
2 个回答
0
要让上面的代码在 Python 3 中正常运行,把 iteritems()
替换成 items()
就可以了。
34
关键字参数必须是有效的Python标识符;这些标识符不能包含-
,因为这个符号是用来表示减法的。
你可以使用**kwargs
这种变量关键字参数语法来传入任意字符串:
f1(**{"Attr1-SubAttr": "Val1", "Attr2": "Val2"})