2016-01-21 36 views
2

我正在調整適用於Python 2.7的第三方Python包(它被聲明)來處理Python 2.6,它雖然已經過時,但仍然是我職權範圍內許多機器上的標準Python。可以將「with」用作Python中的標識符嗎?

我一直在使用compileall模塊來幫助我確定兼容性問題,而事實上我已經發現了很少。只有其中的一個已經被證明非常抗拒:提供給我的代碼使用「與」在幾個地方的標識,既作爲關鍵字參數

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

和屬性名

self.with = keyw['with'] 

。對於那些使用「with」的字節編譯器barf,它似乎應該是這樣的,因爲「with」自從Python 2.6以來就是一個關鍵字。由於所涉及的模塊在2010年初出現了明顯的最新修訂日期,並且由於它的系譜可以追溯到很早以前,所以我傾向於認爲該模塊從未在Python 2.7中工作過(如聲稱的那樣)甚至在Python 2.6中也是如此。還有其他合理的結論嗎?除了在違規環境中用不同的標識符替換「with」之外,還有什麼合理的方法嗎?

回答

5

不,它不能。 with在Python中被列爲保留字,也被稱爲關鍵字。來自Python 2.7 Docs

以下標識符用作保留字或語言的關鍵字,不能用作普通標識符。

同樣在Python 2.6 Docs甚至Python 2.5 Docs。這意味着該模塊無法工作,並且很可能唯一的解決方案是將with更改爲另一個詞。如果你使用的是Vim,this可能會幫助你更輕鬆地完成任務。


嘗試使用with在Python代碼將導致SyntaxError: invalid syntax

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

謝謝,並感謝'bufdo'。我是一個很長時間的vim用戶,但這對我來說是新的。 –

相關問題