Pourquoi Python 3 n'est-il pas rétrocompatible? [fermé]

J'ai appris que Python 3 n'est pas rétrocompatible.

Cela n'affectera-t-il pas beaucoup d'applications utilisant des versions plus anciennes de Python?

Comment les développeurs de Python 3 ne pensaient-ils pas qu'il était absolument nécessaire de le rendre rétrocompatible?

54
demandé sur Michael Currie 2012-01-30 20:12:23

1 réponses

Python 3.0 est-il rétrocompatible et pourquoi?

Python 3.0 implémente beaucoup de fonctionnalités très utiles et rompt la rétrocompatibilité. Il le fait exprès, de sorte que les fonctionnalités peuvent être implémentées même en dépit du fait Python 2.le code x peut ne pas fonctionner correctement sous Python 3.X.

Donc, fondamentalement, Python 3.0 n'est pas rétrocompatible à dessein . grâce à cela, vous pouvez bénéficier d'un tout nouvel ensemble de fonctionnalités. on l'appelle même " Python 3000" ou "Python 3K".

De "nouveautés de Python 3.0" (disponible ici):

Python 3.0, comparé à 2.6. Python 3.0, également connu sous le nom de "python 3000" ou "Py3K", est la première version Python intentionnellement incompatible avec le passé . Il y a plus de changements que dans une version typique, et plus qui sont importants pour tous les utilisateurs de Python. Néanmoins, après avoir digéré les changements, vous constaterez que Python n'a vraiment pas cela a beaucoup changé – en gros, Nous réparons surtout des désagréments et des verrues bien connus, et enlevons beaucoup de vieux cruft.

Caractéristiques Python nouveau dans 3.0, rupture de la rétrocompatibilité

Certaines des caractéristiques les plus notables qui peuvent être considérées comme une rupture de la rétrocompatibilité, mais l'amélioration de la langue en même temps, sont:

  • print est maintenant une fonction, pas une instruction, et l'utiliser comme instruction entraînera un erreur,
  • diverses fonctions et méthodes renvoient maintenant un itérateur ou une vue au lieu de list, ce qui rend l'itération de leurs résultats plus efficace en mémoire (vous n'avez pas besoin de stocker toute la liste des résultats dans la mémoire),
  • cmp argument pour les fonctions de tri comme sorted() et list.sort() n'est plus pris en charge, et doit être remplacé par key argument,
  • int est maintenant le même que Python 2.x long, ce qui rend le traitement des nombres moins complexe,
  • / l'opérateur est maintenant, un opérateur pour la division vraie par défaut (vous pouvez toujours utiliser // pour la division au sol),
  • texte en Python 3.x est maintenant Unicode par défaut,
  • True, False et None sont maintenant des mots réservés (donc vous n'êtes pas capable de faire True, False = False, True,
  • Modification de l'utilisation de la métaclasse,
  • les exceptions doivent être dérivées de BaseException, doivent être soulevées et capturées différemment que dans Python 2.x,
  • et beaucoup plus d'autres changements, rendant Python plus lisible, cohérent & explicite,
54
répondu Tadeck 2012-01-30 16:39:30