Frage

Ich möchte with Anweisung in Python 2.5 in einigen Produktionscode verwenden. Es wurde zurückportiert, soll ich keine Probleme erwarten (zum Beispiel mit der Verfügbarkeit / Kompatibilität zu anderen Maschinen / etc)?

Ist dieser Code

from __future__ import with_statement

kompatibel mit Python 2.6?

War es hilfreich?

Lösung

with_statement wurde nicht zurück portiert aber in Python 2.5 implementiert. Hinzufügen neuer Keywords oder Syntax können bestehende Anwendungen brechen. Mit Python die Art und Weise entschieden sie sich, dies zu umgehen ist es, Menschen zu ermöglichen, Opt-in denen Funktionen früh, so können Sie sich langsam über den Code übergehen.

http://python.org/doc/2.5.2/ ref / future.html

  

Eine zukünftige Anweisung ist eine Richtlinie   der Compiler, dass ein bestimmtes Modul   sollte mit Syntax kompiliert werden oder   Semantik, die in einem zur Verfügung stehen wird   spezifizierten zukünftige Version von Python.   Die Zukunft Aussage soll   erleichtern die Migration zu zukünftigen Versionen von   Python, die unvereinbar einführen   Änderungen an der Sprache. Es ermöglicht den Einsatz   das neuen Features auf einem Pro-Modul   Basis vor der Veröffentlichung, in dem die   Funktion wird zum Standard.

Sie können tatsächlich Futures inspizieren Informationen zu erhalten, wenn zunächst unterstützt, wenn der Import nicht mehr benötigt wird, etc.

Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import __future__
>>> dir(__future__)
['CO_FUTURE_ABSOLUTE_IMPORT', 'CO_FUTURE_DIVISION', 'CO_FUTURE_WITH_STATEMENT', 'CO_GENERATOR_ALLOWED', 'CO_NESTED', '_Feature', '__all__', '__builtins__',
__doc__', '__file__', '__name__', 'absolute_import', 'all_feature_names', 'division', 'generators', 'nested_scopes', 'with_statement']
>>> __future__.with_statement
_Feature((2, 5, 0, 'alpha', 1), (2, 6, 0, 'alpha', 0), 32768)
>>>

Ich habe persönlich gewesen stark die with_statement in Python 2.5 für mehr als ein Jahr mit und haben keine Probleme hatte. Ich betreibe auch transparent, dass Code mit Python 2.6. Es gibt einige seltsame Ecke Fälle, die sie bei Reinigung in der Sprache gearbeitet haben, vor allem im Zusammenhang mit sauber und korrekt mit Anweisungen verschachtelt Kompaktierung.

Andere Tipps

Ja, ist diese Aussage eine No-Operation in Python 2.6, so dass Sie frei sie verwenden können, als auch with ein Schlüsselwort in Ihrem 2.5-Code zu machen, ohne in 2.6 Code des Betrieb zu beeinträchtigen. Dies ist in der Tat die allgemeine Design Absicht, in Python „aus der Zukunft zu importieren“!

Sie können dies nennen in Python 2.6 und 3.0 / 1 ohne Probleme (es ist ein no-op dort).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top