我正在努力调整用于Python 2.7的第三方Python包(它被断言)与Python 2.6一起使用,虽然已经过时,但仍然是我职权范围内许多机器上的标准Python。
我一直在使用compileall
模块来帮助我识别兼容性问题,事实上我很少见。其中只有一个证明非常具有抵抗力:提供给我的代码使用" with"作为一个标识符在几个地方,作为关键字参数
newitems.append(Data(item[:, Numeric.NewAxis], with='lines'))
并作为属性名称
self.with = keyw['with']
。字节编译器barf使用"和",因为它似乎应该,因为""自Python 2.6以来一直是一个关键字。
由于该模块在2010年初具有明显的最新修订日期,并且因为它具有可以追溯到更早的谱系,我倾向于认为该模块在Python 2.7中从未起作用(如声称的那样) )甚至在Python 2.6中也没有。还有其他合理的结论吗?除了用"替换"之外还有任何明智的方法吗?在违规情境中使用不同的标识符?
答案 0 :(得分:5)
不,它不能。 with
在Python中被列为保留字,也称为关键字。来自Python 2.7 Docs:
以下标识符用作保留字或该语言的关键字,不能用作普通标识符。
在Python 2.6 Docs甚至是Python 2.5 Docs中也是如此。这意味着该模块不起作用,并且很可能唯一的解决方案是将with
更改为另一个单词。如果您使用的是Vim,this可能会帮助您轻松完成任务。
尝试在Python代码中使用with
会产生SyntaxError: invalid syntax
。
>>> with = True
File "<stdin>", line 1
with = True
^
SyntaxError: invalid syntax