1

在处理连接字符串属性时,我注意到 Python 的参数解包中有一个奇怪的行为。传入名称中包含空格的参数有效。

def f(**kwargs):
    print(kwargs)

f(spaced keyword=3)         # Syntax error
f(**{'spaced keyword': 3})  # Fine

当我第一次听说参数解包时,我自然认为上面的调用是相同的。所以在上面的例子中,即使拆包也会导致错误。不是语法,但可能与非法参数有关。

强制执行字符串。

f(**{2: 3})  # Type error

但是空字符串也可以。

f(**{'': 3, '\a': 4, '\n': 5})  # Fine

显然不能在函数定义中命名参数,但我仍然想知道到底发生了什么。调用不相同。与普通关键字参数相比,是否有一些关于它们有何不同或如何处理解压缩参数的文档?因此,如果在定义、变量名和调用函数中允许使用语法,那么之后的所有内容是否已经适用于间隔参数名称?

4

0 回答 0