我们都知道python的varargs功能:
def f(*args, **kwargs):
print(args, kwargs)
f(1, 2, foo='bar') # output: (1, 2) {'foo': 'bar'}
kwargs= {'a': None}
f(**kwargs) # output: () {'a': None}
但我最近发现可以使用非有效变量名称的字符串作为键,如下所示:
kwargs= {'name with spaces': None, '%^+': None}
f(**kwargs) # output: () {'name with spaces': None, '%^+': None}
但它并不像没有错误检查发生,例如,如果你尝试
f(**{1: None})
你会得到TypeError: f() keywords must be strings
。
所以现在我想知道这是非常有效的python还是仅仅是CPython的实现细节?我无法在文档中找到有关此行为的详细信息。