2016-12-05 4 views
2

Pythonのinternを使用してPython 2とPython 3の両方で動作する(互換性がある)コードを作成するにはどうすればよいですか?それを行うためのきれいな方法はありますか?Python 2と3の互換性のある方法intern()を呼び出す

Python 2では、internは組み込み型なので、intern()を使用します。 Python 3では、それはsysモジュールに移動されているので、sys.intern()を使用するはずです。 intern()はPython 2では動作しますが、Python 3では動作しません。sys.intern()はPython 3では動作しますが、Python 2では動作しないようです。バージョン検出(醜い)を使わずにPython 2とPython 3の両方で動作するクリーンな構文はありますか?

+2

私は、インターン()は深刻なマイクロ最適化であり、通訳者はすべての明らかなケースで自動的にそれを実行する可能性があり、大部分のケースでは、文字列をインターンにすることによる利益は追加されたコードの複雑さを正当化するのに十分なほど重要ではありません。 – Kevin

答えて

5
try: 
    from sys import intern 
except ImportError: 
    pass 

これは両方で動作するはずです。

+0

完全に同意します。私の答えを更新しました – gipsy

2

いつもと同じです。

try: 
    intern 
except NameError: 
    from sys import intern 
関連する問題