Python字典构造函数有保留的kwargs吗?

2 投票
4 回答
1511 浏览
提问于 2025-04-16 08:26

当使用kwarg风格的字典初始化时:

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

那么,'from'这个键有什么特别之处呢?还有其他在kwarg风格初始化中保留的键吗?

我正在使用Python 2.6。

4 个回答

2

“from”是一个关键字:

from threading import Thread

在Python中,没有上下文敏感的关键字:一个名字要么是关键字,要么可以用作标识符。以前有一个例外:“as”在最初引入时在导入语句中是特殊处理的,但后来它被提升为“完整关键字”。

上下文敏感的关键字可能会带来一些问题。例如,下面的代码:

print=3

应该正常工作还是出错呢?(它可能是一个语法错误的打印语句,或者是给一个名为print的变量赋值)。再比如:

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

这段代码应该定义一个名为print的函数吗?如果是的话,最后一行是一个调用吗?

3

from这个词,就像Python中的其他一些特殊词一样,是一个关键字或保留字。具体来说,from用于从一个模块中导入一些特定的对象到当前的命名空间里。你不能把它用作变量名或者其他什么东西(最终,kwargs是变量名)。这就是不被允许的,即使在理论上可以让它变得清晰,这样做是为了让解析器更简单,也让编写解析器的人保持理智;)

5

from 是用在导入模块时的一个关键词。

你可以查看这个链接了解更多关于Python的关键词:Python语言参考,§2.3.1,"关键词"

需要注意的是,你仍然可以使用关键字参数扩展来获取它们。

撰写回答