"with"可以用作 Python 中的标识符吗?



我正在努力调整用于Python 2.7的第三方Python包(断言)以使用Python 2.6,尽管它已经过时,但仍然是我职权范围内的许多机器上的标准Python。

我一直在使用compileall模块来帮助我识别兼容性问题,实际上我发现的很少。 其中只有一个被证明是非常抗拒的:提供给我的代码在几个地方使用"with"作为标识符,两者都作为关键字参数

newitems.append(Data(item[:, Numeric.NewAxis], with='lines'))

并作为属性名称

self.with = keyw['with']

. 字节编译器对"with"的那些用法进行了抨击,因为它似乎应该这样做,因为自Python 2.6以来,"with"一直是一个关键字。

由于所讨论的模块在 2010 年初有一个明显的最新修订日期,并且由于它的血统可以追溯到更早,我倾向于认为这个模块从未在 Python 2.7 中工作过(正如声称的那样),甚至在 Python 2.6 中也是如此。 还有其他合理的结论吗? 除了在有问题的上下文中用不同的标识符替换"with"之外,还有什么明智的方法吗?

不,它不能。 with在 Python 中被列为保留字,也称为关键字。来自 Python 2.7 文档:

以下标识符用作保留字或语言关键字,不能用作普通标识符。

在Python 2.6 Docs甚至Python 2.5 Docs中也是如此。这意味着该模块不起作用,很可能唯一的解决方案是将with更改为另一个单词。如果您使用的是 Vim,这可能有助于简化任务。


尝试在 Python 代码中使用with将导致SyntaxError: invalid syntax

>>> with = True
  File "<stdin>", line 1
    with = True
         ^
SyntaxError: invalid syntax

最新更新