Les personnes qui souhaitent apprendre Python auront une confusion, c'est-à-dire que Python a actuellement deux versions, Python2 et Python3. Quelle est la différence entre Python2 et Python3 ?
python3 et python2 sont incompatibles et les différences sont relativement importantes. python3 n'est pas rétrocompatible, mais la plupart des composants et extensions sont basés sur python2. À l'heure actuelle, la plupart des applications pratiques ne prennent pas en compte Python 3 pour le moment et font parfois attention à l'écriture de code compatible avec 2/3. Lorsque vous écrivez du nouveau code principalement en utilisant Python2, vous devriez envisager la possibilité de migrer vers Python3 à l'avenir. Selon les statistiques, 10 % utilisent actuellement Python 3 ; 20 % utilisent à la fois Python 2 et Python 3, et 70 % utilisent Python 2 ;
En fait, python est l'un des logiciels les plus couramment utilisés sous Linux, mais la plupart des versions actuelles de Linux utilisent toujours python2. De plus, il existe davantage de programmes qui s'appuient sur python2 sous Linux, donc Python3 devrait le remplacer. python2 et devenir le courant dominant Cela prendra encore quelques années. Si vous apprenez encore Python 2 pour trouver un emploi, il n'est pas difficile de passer de Python 2 à python3 après avoir appris Python 2.
Après avoir longuement parlé, quelle est la différence entre Python2 et Python3 ?
1. Performances
Py3.0 exécute le benchmark pystone 30 % plus lentement que Py2.5. Guido estime que Py3.0 offre une grande marge d'optimisation et peut obtenir de bons résultats d'optimisation dans les opérations sur les chaînes et les entiers.
Les performances de Py3.1 sont 15 % plus lentes que celles de Py2.5, et il y a encore beaucoup de place à l'amélioration.
2. Encodage
Py3. Utilisez !=
2) Supprimez `` et utilisez repr()
3) Ajoutez au fur et à mesure des mots-clés, ainsi que True, False, None
4) La division entière renvoie un nombre à virgule flottante. Pour obtenir un résultat entier, veuillez utiliser //
5) Ajoutez une instruction non locale. En utilisant noclocal x, vous pouvez directement attribuer des variables périphériques (non globales)
6) Supprimez l'instruction print et ajoutez la fonction print() pour obtenir la même fonction. La même chose est vraie pour l'instruction exec, qui a été remplacée par la fonction exec()
7) Modification du comportement de l'opérateur séquentiel, tel que x 8) La fonction d'entrée a été modifiée, raw_input a été supprimée et remplacée par input : 9) Le déballage des paramètres de tuple a été supprimé. Vous ne pouvez pas définir la fonction comme def(a, (b, c)):pass 10) Nouvelle variable de mot octal, la fonction oct() est modifiée en conséquence. 11) Ajout de littéraux binaires et de la fonction bin() 12) Déballage itérable étendu. Dans Py3. 13) Nouveau super(), vous ne pouvez plus passer de paramètres à super(), 14) Nouvelle syntaxe de métaclasse : 15) Prise en charge du décorateur de classe. 4. Chaînes et chaînes d'octets 1) Il n'existe désormais qu'un seul type de chaîne, str, mais c'est presque la même chose que la version 2.x d'Unicode. 2) Concernant les chaînes d'octets, veuillez vous référer au 2ème élément de "Type de données" 5 Type de données 1) Py3.X a supprimé le type long, maintenant, il n'y a qu'un seul type entier - int, mais il se comporte comme long dans la version 2. 1) Introduisez les classes de base abstraites (Abstract Base Classes, ABCs). 2) Les classes de conteneurs et les classes d'itérateurs sont des ABC, il y a donc beaucoup plus de types dans le module cellesctions que dans Py2.5. 3) La méthode next() de l'itérateur a été renommée __next__(), et la fonction intégrée next() a été ajoutée pour appeler l'itérateur 4) @abstractmethod et @ étaient l'ajout de abstractproperty a deux décorateurs, ce qui rend plus pratique l'écriture de méthodes abstraites (propriétés). 7. Exceptions 1) Toutes les exceptions sont héritées de BaseException et StardardError 2) Le comportement de séquence et l'attribut .message de la classe d'exception sont supprimés 3) Utilisez raise Exception(args) au lieu de raise Exception, syntaxe args 4) Modifications de la syntaxe pour détecter les exceptions, le mot-clé as est introduit pour identifier les instances d'exception 5) Exception chain , car __context__ n'est pas implémenté dans la version 3.0a1 8. Modifications du module 6) Le Les fonctions os.tmpnam() et os.tmpfile() ont été déplacées vers le module tmpfile 7) Le module tokenize fonctionne désormais avec les octets. Le point d'entrée principal n'est plus generate_tokens, mais tokenize.tokenize() 9. Autres 4) string.letters et les .lowercase et .uppercase associés sont supprimés, veuillez utiliser string.ascii_letters à la place, etc. 5) Si x < > Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!
5) Suppression du nouveau module