关键字have to是字符串

>>> def foo(**kwargs):
...     pass
...
>>> foo(**{0:0})
TypeError: foo() keywords must be strings

但是通过一些黑魔法, namespace 能够绕过它
>>> from types import SimpleNamespace
>>> SimpleNamespace(**{0:0})
namespace()

为什么?如何? 您能否实现一个可以在kwargs映射中接收整数的Python函数?

最佳答案

现在,SimpleNamespace拒绝整数关键字键。正如Martijn所说,the original behavior was a bug。看来它已在v3.9.0b2中由bpo-31655: Validate keyword names in SimpleNamespace constructor修复,然后由backported to 3.6修复。

10-06 06:17