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

조회수 635회

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보다 커야 함!

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

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

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

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

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

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.