Dois-je utiliser Python 2 ou Python 3 pour mon activité de développement ?
Version courte : Python 2.x est un héritage, Python 3.x est le présent et l'avenir du langage
Python 3.0 est sorti en 2008. La version finale 2.x version 2.7 est sortie mi-2010, avec une déclaration de support étendu pour cette version en fin de vie.
La branche 2.x ne verra plus de nouvelles versions majeures après cela. 3.x est en cours de développement actif et a déjà connu plus de cinq années de versions stables, dont la version 3.3 en 2012, 3.4 en 2014, 3.5 en 2015 et 3.6 en 2016.
Cela signifie que toutes les améliorations récentes des bibliothèques standard, par exemple, ne sont disponibles par défaut que dans Python 3.x.
Guido van Rossum (le créateur original du langage Python) a décidé de nettoyer Python 2.x correctement, avec moins d'attention pour la compatibilité rétroactive que pour les nouvelles versions de la gamme 2.x. L'amélioration la plus drastique est la meilleure prise en charge de l'Unicode (toutes les chaînes de texte étant Unicode par défaut) ainsi qu'une séparation octets/Unicode plus saine.
Quelles sont les différences entre Python v2 et v3 ?
En outre, plusieurs aspects du langage de base (tels que l'impression et l'exécution étant des déclarations, les entiers utilisant la division de plancher) ont été ajustés pour être plus faciles à apprendre pour les nouveaux venus et pour être plus cohérents avec le reste de la langue, et le vieux cruft a été enlevé (par exemple, toutes les classes sont maintenant nouveau style, "range()" renvoie une mémoire efficace itératable, pas une liste comme dans 2.x).
Le document Quoi de neuf dans Python 3.0 donne un bon aperçu des principaux changements de langage et des sources probables d'incompatibilité avec le code Python 2.x existant. Nick Coghlan (l'un des développeurs du noyau de CPython) a également créé une FAQ relativement complète concernant la transition.
Cependant, l'écosystème plus large de Python a accumulé une quantité importante de logiciels de qualité au fil des ans. L'inconvénient de casser la rétrocompatibilité en 3.x est que certains de ces logiciels (en particulier les logiciels internes aux entreprises) ne fonctionnent toujours pas encore sur 3.x.
Quelle version dois-je utiliser ?
La version que vous devriez utiliser dépend surtout de ce que vous voulez faire.
Si vous pouvez faire exactement ce que vous voulez avec Python 3.x, super ! Il y a quelques inconvénients mineurs, tels qu'un support de bibliothèque très légèrement plus mauvais1 et le fait que certaines distributions Linux et Macs actuels utilisent toujours 2.x par défaut, mais comme langage Python 3.x est définitivement mature et prêt à être utilisé.
Tant que Python 3.x est installé sur les ordinateurs de vos utilisateurs (ce qui devrait être facile, car de nombreuses personnes qui lisent ceci ne font que développer quelque chose pour eux-mêmes ou pour un environnement qu'ils contrôlent) et que vous écrivez des choses où vous savez qu'aucun des modules Python 2.x n'est nécessaire, c'est un excellent choix.
De plus, la plupart des distributions Linux ont Python 3.x déjà installé, et presque toutes sont disponibles pour les utilisateurs finaux. Une exception quelque peu douloureuse est Red Hat Enterprise Linux jusqu'à la version 7 : Python 3 existe dans le référentiel EPEL, mais certains utilisateurs peuvent ne pas être autorisés par la politique de l'entreprise à installer quoi que ce soit à partir de ces emplacements supplémentaires - voir note sur le "contrôle" ci-dessous. Certaines distributions suppriment progressivement Python 2 par défaut préinstallé.
En particulier, les instructeurs qui introduisent Python à de nouveaux programmeurs devraient d'abord envisager d'enseigner Python 3, puis d'introduire les différences dans Python 2 par la suite (si nécessaire), puisque Python 3 élimine de nombreuses bizarreries qui peuvent inutilement faire trébucher les programmeurs débutants essayant d'apprendre Python 2.
Cependant, il y a quelques problèmes clés qui peuvent vous obliger à utiliser Python 2 plutôt que Python 3.
- Premièrement, si vous déployez dans un environnement que vous ne contrôlez pas, cela peut nécessiter l'utilisation d'une version spécifique, plutôt que de vous permettre une sélection gratuite parmi les versions disponibles.
- Deuxièmement, si vous voulez utiliser un paquet ou utilitaire tiers spécifique qui n'a pas encore de version publiée compatible avec Python 3, et que le portage de ce paquet est une tâche non triviale, vous pouvez choisir d'utiliser Python 2 afin de conserver un accès à ce paquet.
Python 3 supporte déjà largement la création d'applications GUI, avec Tkinter dans la bibliothèque standard. Python 3 a été supporté par PyQt presque dès la sortie de Python 3 ; PySide a ajouté le support de Python 3 en 2011. Les interfaces graphiques GTK+ peuvent être créées avec PyGObject qui supporte Python 3 et est le successeur de PyGtk.
De nombreux autres paquets majeurs ont été portés sur Python 3, notamment :
- NumPy et SciPy (pour le calcul des nombres et le calcul scientifique)
- Django, Flask, CherryPy et Pyramid (pour sites Web)
- PIL (un module de traitement d'image) a été remplacé par sa fourchette Pillow, qui supporte Python 3.
- cx_Freeze (pour les applications d'emballage avec leurs dépendances)
- py2exe (pour le packaging de votre application pour les utilisateurs Windows)
- OpenCV 3, (une librairie open source de vision par ordinateur et d'apprentissage machine) supporte maintenant Python 3 dans les versions 3.0 et ultérieures.
- Requêtes, (une bibliothèque HTTP pour les humains)
- lxml, (une puissante bibliothèque de traitement XML Pythonic combinant libxml2/libxslt avec l'API ElementTree)
- BeautifulSoup4, (une librairie de capture d'écran pour analyser le HTML et le XML)
- Le projet IPython/Jupyter pour le calcul interactif supporte entièrement Python 3.
- Et bien d'autres encore !
Python 3.0 est sorti en 2008. La version finale 2.x version 2.7 est sortie mi-2010, avec une déclaration de support étendu pour cette version en fin de vie.
La branche 2.x ne verra plus de nouvelles versions majeures après cela. 3.x est en cours de développement actif et a déjà connu plus de cinq années de versions stables, dont la version 3.3 en 2012, 3.4 en 2014, 3.5 en 2015 et 3.6 en 2016.
Cela signifie que toutes les améliorations récentes des bibliothèques standard, par exemple, ne sont disponibles par défaut que dans Python 3.x.
Guido van Rossum (le créateur original du langage Python) a décidé de nettoyer Python 2.x correctement, avec moins d'attention pour la compatibilité rétroactive que pour les nouvelles versions de la gamme 2.x. L'amélioration la plus drastique est la meilleure prise en charge de l'Unicode (toutes les chaînes de texte étant Unicode par défaut) ainsi qu'une séparation octets/Unicode plus saine.
Quelles sont les différences entre Python v2 et v3 ?
En outre, plusieurs aspects du langage de base (tels que l'impression et l'exécution étant des déclarations, les entiers utilisant la division de plancher) ont été ajustés pour être plus faciles à apprendre pour les nouveaux venus et pour être plus cohérents avec le reste de la langue, et le vieux cruft a été enlevé (par exemple, toutes les classes sont maintenant nouveau style, "range()" renvoie une mémoire efficace itératable, pas une liste comme dans 2.x).
Le document Quoi de neuf dans Python 3.0 donne un bon aperçu des principaux changements de langage et des sources probables d'incompatibilité avec le code Python 2.x existant. Nick Coghlan (l'un des développeurs du noyau de CPython) a également créé une FAQ relativement complète concernant la transition.
Cependant, l'écosystème plus large de Python a accumulé une quantité importante de logiciels de qualité au fil des ans. L'inconvénient de casser la rétrocompatibilité en 3.x est que certains de ces logiciels (en particulier les logiciels internes aux entreprises) ne fonctionnent toujours pas encore sur 3.x.
Quelle version dois-je utiliser ?
La version que vous devriez utiliser dépend surtout de ce que vous voulez faire.
Si vous pouvez faire exactement ce que vous voulez avec Python 3.x, super ! Il y a quelques inconvénients mineurs, tels qu'un support de bibliothèque très légèrement plus mauvais1 et le fait que certaines distributions Linux et Macs actuels utilisent toujours 2.x par défaut, mais comme langage Python 3.x est définitivement mature et prêt à être utilisé.
Tant que Python 3.x est installé sur les ordinateurs de vos utilisateurs (ce qui devrait être facile, car de nombreuses personnes qui lisent ceci ne font que développer quelque chose pour eux-mêmes ou pour un environnement qu'ils contrôlent) et que vous écrivez des choses où vous savez qu'aucun des modules Python 2.x n'est nécessaire, c'est un excellent choix.
De plus, la plupart des distributions Linux ont Python 3.x déjà installé, et presque toutes sont disponibles pour les utilisateurs finaux. Une exception quelque peu douloureuse est Red Hat Enterprise Linux jusqu'à la version 7 : Python 3 existe dans le référentiel EPEL, mais certains utilisateurs peuvent ne pas être autorisés par la politique de l'entreprise à installer quoi que ce soit à partir de ces emplacements supplémentaires - voir note sur le "contrôle" ci-dessous. Certaines distributions suppriment progressivement Python 2 par défaut préinstallé.
En particulier, les instructeurs qui introduisent Python à de nouveaux programmeurs devraient d'abord envisager d'enseigner Python 3, puis d'introduire les différences dans Python 2 par la suite (si nécessaire), puisque Python 3 élimine de nombreuses bizarreries qui peuvent inutilement faire trébucher les programmeurs débutants essayant d'apprendre Python 2.
Cependant, il y a quelques problèmes clés qui peuvent vous obliger à utiliser Python 2 plutôt que Python 3.
- Premièrement, si vous déployez dans un environnement que vous ne contrôlez pas, cela peut nécessiter l'utilisation d'une version spécifique, plutôt que de vous permettre une sélection gratuite parmi les versions disponibles.
- Deuxièmement, si vous voulez utiliser un paquet ou utilitaire tiers spécifique qui n'a pas encore de version publiée compatible avec Python 3, et que le portage de ce paquet est une tâche non triviale, vous pouvez choisir d'utiliser Python 2 afin de conserver un accès à ce paquet.
Python 3 supporte déjà largement la création d'applications GUI, avec Tkinter dans la bibliothèque standard. Python 3 a été supporté par PyQt presque dès la sortie de Python 3 ; PySide a ajouté le support de Python 3 en 2011. Les interfaces graphiques GTK+ peuvent être créées avec PyGObject qui supporte Python 3 et est le successeur de PyGtk.
De nombreux autres paquets majeurs ont été portés sur Python 3, notamment :
- NumPy et SciPy (pour le calcul des nombres et le calcul scientifique)
- Django, Flask, CherryPy et Pyramid (pour sites Web)
- PIL (un module de traitement d'image) a été remplacé par sa fourchette Pillow, qui supporte Python 3.
- cx_Freeze (pour les applications d'emballage avec leurs dépendances)
- py2exe (pour le packaging de votre application pour les utilisateurs Windows)
- OpenCV 3, (une librairie open source de vision par ordinateur et d'apprentissage machine) supporte maintenant Python 3 dans les versions 3.0 et ultérieures.
- Requêtes, (une bibliothèque HTTP pour les humains)
- lxml, (une puissante bibliothèque de traitement XML Pythonic combinant libxml2/libxslt avec l'API ElementTree)
- BeautifulSoup4, (une librairie de capture d'écran pour analyser le HTML et le XML)
- Le projet IPython/Jupyter pour le calcul interactif supporte entièrement Python 3.
- Et bien d'autres encore !
Comments
Post a Comment