【问题标题】:Can "with" be used as an identifier in Python?“with”可以用作Python中的标识符吗?
【发布时间】:2016-04-28 10:25:55
【问题描述】:

我正在努力调整一个适用于 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”之外,还有什么明智的方法吗?

【问题讨论】:

    标签: python python-2.7 python-2.6


    【解决方案1】:

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

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

    Python 2.6 Docs 甚至Python 2.5 Docs 也是如此。这意味着该模块不起作用,并且很可能唯一的解决方案是将withs 更改为另一个词。如果您使用 Vim,this 可能会帮助您更轻松地完成任务。


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

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

    【讨论】:

    • 谢谢,谢谢bufdo。我是vim 的老用户,但那对我来说是新用户。
    猜你喜欢
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 2013-04-10
    • 2021-12-07
    • 2015-02-09
    • 1970-01-01
    相关资源
    最近更新 更多