我習慣於在Python中看到if obj is None:
,最近我遇到了if obj is():
。由於元組不可變,所以在Python解釋器中這聽起來像是一個合理的內部優化,使空元組成爲一個單元,因此允許使用is
而不是要求==
。但這是保證某個地方?自從哪個版本的翻譯?將對象與Python 2中的'is'運算符進行比較。
問題很重要,因爲如果()不是單身人士,並且有一種生成具有不同地址的空元組的方法,則使用is {}
是一個錯誤。如果只有在x> 0的Python 2.x後才能保證,那麼如果需要確保代碼的向後兼容性,那麼知道x的值很重要。同樣重要的是要知道這是否可以使用時pypy /的Jython/IronPython的破壞你的代碼...
這絕對不地道。有沒有合理的用例呢? –
@StevenRumbalski:沒有特殊用例。我發現代碼使用這個,它讓我想知道我是否應該改回它,或者更新我對「is」操作符的看法。在解釋器級別實現()作爲單例是有意義的... –