Domanda

Mi piacerebbe usare dichiarazione with in Python 2.5 in un certo codice di produzione. E 'stato backport, devo aspettarmi problemi (per esempio con la disponibilità / compatibilità su altre macchine / etc)?

E 'questo codice

from __future__ import with_statement

compatibile con Python 2.6?

È stato utile?

Soluzione

with_statement non è stato portato indietro ma implementato in Python 2.5. L'aggiunta di nuove parole chiave o sintassi può rompere le applicazioni esistenti. Con Python il modo in cui ha deciso di gestire questa situazione è permettere alle persone di opt-in per quelle caratteristiche presto in modo da poter lentamente la transizione il codice sopra.

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

  

Una dichiarazione futuro è una direttiva per   il compilatore che un particolare modulo   deve essere compilato utilizzando la sintassi o   semantica che saranno disponibili in una   specificata futura versione di Python.   La dichiarazione futuro è destinato a   facilitare la migrazione alle future versioni di   Python che introducono incompatibili   modifiche al linguaggio. Permette l'uso   delle nuove funzionalità su un modulo per-   base prima del rilascio in cui la   caratteristica diventa standard.

Si può effettivamente controllare i futures per ottenere informazioni su quando prima sostenuto, quando l'importazione non è più necessaria, ecc.

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)
>>>

Io personalmente sono stato pesantemente utilizzando il with_statement in Python 2.5 per oltre un anno e non ho avuto problemi. Ho anche in modo trasparente eseguire tale codice con Python 2.6. Ci sono alcuni casi angolo strani che hanno lavorato a ripulire in lingua, per lo più relative al modo pulito e corretto compattazione nidificato con le dichiarazioni.

Altri suggerimenti

Sì, questa affermazione è un no-operation in Python 2.6, in modo da poter liberamente utilizzare per fare with una parola chiave nel codice 2,5 pure, senza influire sul funzionamento del codice 2.6. Questo è infatti l'intenzione disegno generale di "importare dal futuro" in Python!

È possibile chiamare questo in Python 2.6 e 3.0 / 1 senza problemi (si tratta di un no-op là).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top