2016-12-05 8 views
2

Python의 intern을 사용하여 Python 2 및 Python 3 모두와 호환되는 (호환 가능) 코드를 작성하려면 어떻게해야합니까? 그것을 할 수있는 깨끗한 방법이 있습니까?Python 2 및 3 호환 인턴() 호출

파이썬 2에서는 인턴이 내장되어 있으므로 intern()을 사용합니다. 파이썬 3에서는 sys 모듈로 옮겨 졌으므로 sys.intern()을 사용해야합니다. intern()은 파이썬 2에서 작동하지만 파이썬 3에서는 작동하지 않으며, sys.intern()은 파이썬 3에서는 작동하지만 파이썬 2에서는 작동하지 않는 것으로 보입니다. 버전 감지 (ugly)를 사용하지 않고 파이썬 2와 파이썬 3 모두에서 작동하는 깨끗한 구문이 있습니까?

+2

나는'intern()'이 심각한 미세 최적화라는 것을 지적해야한다. 인터프리터는 명백한 모든 경우에 자동적으로 그것을 할 것이고, 대다수의 경우, 문자열을 인턴하는 이득은 추가 된 코드의 복잡성을 정당화 할 정도로 중요하지 않습니다. – Kevin

답변

5
try: 
    from sys import intern 
except ImportError: 
    pass 

이 모두에서 작동합니다.

+0

전혀 동의합니다. 내 대답 업데이트 – gipsy

2

항상 동일합니다.

try: 
    intern 
except NameError: 
    from sys import intern