SORU
15 Ocak 2009, PERŞEMBE


Nasıl yeni bir dil özelliklerini kullanan bir program Python sürümü için kontrol edebilirim?

Eğer en az bir özel gerektiren bir Python betiği varsa düzgün bir şekilde başarısız için doğru yolu nedir Python sürümü Python önceki bir sürümü komut dosyası başlatmak için kullanılır?

Nasıl kontrol bir hata iletisi vermek için yeterince erken alabilirim ve çıkış?

Örneğin, ternery operatörü kullanan bir program (2.5 yeni)"," blok ile (2.6 yeni). Basit bir yorumlayıcı sürüm yazdım senaryoyu ilk şey denetleyicisi rutin o kadar girmiyor arayın. Bunun yerine, script benim rutinleri önce python derleme sırasında başarısız olur hatta denir. Böylece betiğin kullanıcı bazı çok görür karanlık synax hatası tracebacks - oldukça çok gerektirir sadece çalışan bir durum olduğunu anlamak için bir uzman Python sürümü yanlış.

Python sürümünü kontrol etmek için nasıl biliyorum. Bu sorun, bazı sözdizimi Python eski sürümlerinde yasaktır. Bu program göz önünde bulundurun:

import sys
if sys.version_info < (2, 4):
    raise "must use python 2.5 or greater"
else:
    # syntax error in 2.4, ok in 2.5
    x = 1 if True else 2
    print x

2.4, altında çalıştırıldığında bu sonuç istiyorum

$ ~/bin/python2.4 tern.py 
must use python 2.5 or greater

ve bu sonuç değil:

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

(Bir iş için kanalize.)

CEVAP
15 Ocak 2009, PERŞEMBE


eval kullanarak test edebilirsiniz:

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

Ayrıca, withPython mevcut 2.5, sadece from __future__ import with_statement ekleyin.

EDİT: kontrol yeterince erken almak için .py farklı dosya yap split ve uyumluluk onay almadan önce ana dosyası (bir pakette __init__.py örn:

# __init__.py

# Check compatibility
try:
  eval("1 if True else 2")
except SyntaxError:
  raise ImportError("requires ternary support")

# import from another module
from impl import *

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • eyes4beautee

    eyes4beautee

    17 HAZİRAN 2011
  • InfoPuppet

    InfoPuppet

    15 Kasım 2011
  • Kenneth Håkonsen

    Kenneth Håk

    13 Mart 2011