새로생긴/없어진 문법을 쓸 수 있는지 확인하려면 어떻게 해야될까요?


2.5부터 생긴 삼항연산자나 3.x에서는 사라진 xrange 등 버전에 영향을 받는 문법이나 기능을 확인하려고 합니다.

저는 코드를 실행하다가 삼항연산자를 쓰기 전 버전(2.4이하)체크를 해서 예외를 raise하는 의도로 코드를 짠 건데

2.5이상에서 코드는 잘 돌아가지만 미만에서는 애초에 실행도 안됩니다. 어떻게 해결할지 알려주실 수 있을까요?

소스코드

import sys
if sys.version_info < (2, 4):
    raise "2.5보다 커야 함!"
else:
    # 2.4에서는 에러, 2.5부터 ok
    x = 1 if True else 2
    print x

에러 - 2.4에서 실행했을 때

$ ~/bin/python2.4 tern.py 
  File "tern.py", line 5
    x = 1 if True else 2
           ^
SyntaxError: invalid syntax

원하는 결과 - 2.4에서 실행했을 때

$ ~/bin/python2.4 tern.py 
2.5보다 커야 함!
  • 2016년 02월 11일에 작성됨

조회수 118


1 답변


좋아요
0
싫어요
채택취소하기

이럴 때는 버전을 확인하기보다는 eval을 써서 직접 확인하는 게 더 편합니다.

with문이나 삼항 연산자같은 기능이 언제 추가됐는지 일일이 기억하는것도 비효율적이지요

try:
    eval("1 if True else 2")
except SyntaxError:
    #doesn't have ternary

아마 아실 거라고 생각하지만 __future__모듈을 쓰면 구버전에서도 새로 나온 기능을 쓸 수 있습니다.(with 등)

  • 2016년 02월 11일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close