是否为python的dict构造函数保留了kwargs?

时间:2010-12-12 22:05:01

标签: python

使用kwarg风格的dict初始化时:

In [3]: dict(a=1, b=2, c=3)
Out[3]: {'a': 1, 'b': 2, 'c': 3}

由于某种原因,定义键'from'会引发语法错误:

In [4]: dict(to=0, from=1)
------------------------------------------------------------
   File "<ipython console>", line 1
     dict(to=0, from=1)
                   ^
SyntaxError: invalid syntax

钥匙'来自'有什么特别之处?是否还有其他保留键用于kwarg风格的初始化?

我正在使用Python 2.6。

4 个答案:

答案 0 :(得分:5)

from用于导入。

Python Language Reference, §2.3.1, "Keywords"

请注意,您仍然可以使用kwarg扩展来完成它们。

答案 1 :(得分:3)

from,与其他一些令牌一样,是Python中的关键字/保留字(from专门用于将一些精心挑选的对象从模块导入当前命名空间)。您不能将它们用作标识符或任何东西(最终,kwargs是标识符)。它是根本不被允许的,即使在理论上它可以消除歧义,保持解析器简单和编写解析器的人理智;)

答案 2 :(得分:2)

from是一个关键字:

from threading import Thread

Python没有上下文相关的关键字:名称可以是关键字,也可以用作标识符。曾经有一个例外:“as”在导入语句中首次引入时曾经是特殊的,但后来被提升为“完整关键字”。

上下文相关关键字将是一个值得怀疑的功能。例如。应

print=3

工作或失败(它可能是语法上不正确的print语句,或者是对名为print的变量的赋值)。或者,怎么样

def print(x):
    print x
print(3)

这应该定义一个功能打印吗?如果是这样,最后一行是电话吗?

答案 3 :(得分:1)

你不能在kwargs

中使用from之类的python关键字