具有无效变量名称的关键字变量

时间:2016-09-07 06:46:38

标签: python variadic-functions

我们都知道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的实现细节?我无法在文档中找到有关此行为的详细信息。

0 个答案:

没有答案