831 votes

Ce qui est __future__ en Python utilisé pour et comment et quand l’utiliser, et comment ça marche

Les gens, y compris moi savoir il y a quelque chose en Python appelé __future__ , et il apparaît dans un certain nombre de modules que j'ai lu. Et le terne des gens comme moi ne sais pas pourquoi il est là, et comment/quand l'utiliser , même après la lecture de l'Python __future__ doc.

De sorte que toute l'explique avec des exemples pour le démontrer?

J'ai eu quelques réponses rapidement, qui ont l'air tout à fait correct, en termes de l'utilisation de base.

Cependant, et aussi pour mieux comprendre comment __future__ fonctionne:

Je viens de réaliser un truc important qui a été source de confusion moi quand j'ai essayé de le comprendre, c'est comment l'actuelle version de python inclure quelque chose qui sera publié dans la prochaine version? et comment un programme à l'aide d'une nouvelle fonctionnalité dans une prochaine version de python être compilé avec succès par l'actuelle version de python?

Donc, je suppose que maintenant que la version actuelle a déjà emballés certains aspects potentiels qui seront inclus dans les versions à venir - est-ce vrai? mais les fonctionnalités sont uniquement disponibles en __future__, c'est parce qu'elle ne devienne pas la norme mais - suis-je droit?

467voto

glglgl Points 35668

Avec elle, vous pouvez être progressivement habitués à des modifications incompatibles ou à celles d'introduire de nouveaux mots clés.

E. g., pour l'utilisation de gestionnaires de contexte, il y avait à faire from __future__ import with_statement 2,5, comme l' with mot-clé était nouveau et ne devraient pas être utilisés comme noms de variables plus longtemps. Afin d'être en mesure d'utiliser un programme qui utilise des variables nommées with, au-dessus de la déclaration d'importation est nécessaire.

Un autre exemple est

from __future__ import division
print 8/7  # prints 1.1428571428571428
print 8//7 # prints 1

Sans l' __future__ trucs, les deux print états imprimer 1.

L'interne différence est que, sans que l'importation, / est mappé à l' __div__() méthode, alors qu'avec elle, __truediv__() est utilisé. (En tout cas, // des appels __floordiv__().)

A propos print: print devient une fonction à 3.x, de perdre sa propriété particulière d'un mot clé. Donc, c'est l'inverse.

>>> print

>>> from __future__ import print_function
>>> print
<built-in function print>
>>>

226voto

agf Points 45052

Lorsque vous ne

from __future__ import whatever

Vous n'êtes pas vraiment à l'aide d'un import déclaration, mais une future déclaration. Vous êtes en train de lire le mauvais docs, que vous n'êtes pas vraiment l'importation du module.

Les déclarations futures spéciaux sont-ils modifier le fonctionnement de votre module Python est analysé, c'est pourquoi ce doit être en haut du fichier. Ils donnent de nouvelles -- ou -- un sens à des mots ou des symboles dans votre fichier. À partir de la documentation:

Une future déclaration est une directive de compilation d'un module doit être compilé à l'aide de la syntaxe ou de la sémantique qui sera disponible dans une future version de Python. L'avenir de déclaration est destiné à faciliter la migration vers les futures versions de Python qui introduisent des changements incompatible à la langue. Il permet d'utiliser les nouvelles fonctionnalités de base de chaque module avant de le lâcher dans lequel la fonction devient la norme.

Si vous souhaitez importer l' __future__ module, il suffit de faire

import __future__

et y accéder ensuite comme d'habitude.

132voto

Jorge Code Points 659

__future__ est un pseudo-module qui les programmeurs peuvent utiliser pour activer les nouvelles fonctionnalités de langage qui ne sont pas compatibles avec le courant de l'interprète. Par exemple, l'expression 11/4 actuellement évalue 2. Si le module dans lequel il est exécuté a permis vraie division en exécutant:

from __future__ import division

l'expression 11/4 permettrait d'évaluer à l' 2.75. Par l'importation de l' __future__ module et l'évaluation de ses variables, vous pouvez voir si une nouvelle fonctionnalité a été ajoutée à la langue, et quand il devient la valeur par défaut:

  >>> import __future__
  >>> __future__.division
  _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)

61voto

Mihai Maruseac Points 10647

Il peut être utilisé pour utiliser les fonctionnalités qui apparaîtront dans les nouvelles versions tout en ayant une ancienne version de Python.

Par exemple

vous permettra d’utiliser `` comme une fonction :

28voto

Praym Points 81

Ou est-il envie de dire: "Puisque c'est python v2.7, de l'utilisation que les différents "imprimer" de la fonction qui a été ajoutée à python v2.7, après qu'il a été ajouté en python 3. Donc, mon "impression" ne sera plus des déclarations (par exemple print "message" ), mais des fonctions (par exemple, print("message", options). De cette façon, lorsque mon code est exécuté en python 3, "imprimer" ne se cassera pas."

Dans

from __future__ import print_statement

print_statement est le module contenant la nouvelle de la mise en œuvre de "l'impression" que par la façon dont elle se comporte en python v3.

Cela a plus d'explication: http://python3porting.com/noconv.html

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X