[Tutoriel Python] La différence entre les versions Python2.x et 3.x

黄舟
Libérer: 2016-12-24 15:44:45
original
1423 Les gens l'ont consulté

La différence entre les versions Python 2.x et 3.x

La version 3.0 de Python est souvent appelée Python 3000, ou Py3k en abrégé. Il s'agit d'une mise à niveau majeure par rapport aux versions précédentes de Python.

Afin de ne pas alourdir trop de charge, Python 3.0 n'a pas été conçu dans un souci de compatibilité descendante.

De nombreux programmes conçus pour les versions antérieures de Python ne peuvent pas fonctionner correctement sur Python 3.0.

Afin de prendre en charge les programmes existants, Python 2.6 est une version de transition qui utilise essentiellement la syntaxe et les bibliothèques de Python 2.x. Elle envisage également la migration vers Python 3.0 et permet l'utilisation de certains Python 3.0. syntaxe et fonctions.


Il est recommandé aux nouveaux programmes Python d'utiliser la syntaxe de la version Python 3.0.


À moins que l'environnement d'exécution ne puisse installer Python 3.0 ou que le programme lui-même utilise une bibliothèque tierce qui ne prend pas en charge Python 3.0. Les bibliothèques tierces qui ne prennent actuellement pas en charge Python 3.0 incluent Twisted, py2exe, PIL, etc.

La plupart des bibliothèques tierces travaillent dur pour être compatibles avec la version Python 3.0. Même si Python 3.0 ne peut pas être utilisé immédiatement, il est recommandé d'écrire un programme compatible avec Python 3.0 puis de l'exécuter en utilisant Python 2.6 ou Python 2.7.

Principaux changements

Les changements dans Python 3.0 concernent principalement les aspects suivants :

L'instruction print a disparu, remplacée par la fonction print(). Python 2.6 et Python 2.7 prennent partiellement en charge cette forme de syntaxe d'impression. Dans Python 2.6 et Python 2.7, les trois formes suivantes sont équivalentes :

print "fish"
print ("fish") #注意print后面有个空格
print("fish") #print()不能带有任何其它参数
Copier après la connexion

Cependant, Python 2.6 prend en charge la nouvelle syntaxe print() :

from __future__ import print_function
print("fish", "panda", sep=', ')
Copier après la connexion

new La catégorie str représente une chaîne Unicode, équivalente à la catégorie unicode dans la version Python 2.x. La séquence d'octets est représentée par une syntaxe similaire à b"abc" et représentée par la classe bytes, qui est équivalente à la classe str de Python 2.x.

Les deux catégories ne peuvent plus être automatiquement converties implicitement, donc "fish" b"panda" est une erreur dans Python 3.x. La bonne façon de l'écrire est "fish" b"panda".decode("utf-8"). Python 2.6 peut reconnaître automatiquement une séquence d'octets comme une chaîne Unicode par :

from __future__ import unicode_literals
print(repr("fish"))
Copier après la connexion

L'opérateur de division "/" renvoie toujours un nombre à virgule flottante dans Python 3.x. Dans Python 2.6, il sera jugé si le dividende et le diviseur sont des entiers. S'il s'agit d'un nombre entier, il renverra une valeur entière, ce qui équivaut à une division entière ; s'il s'agit d'un nombre à virgule flottante, il renverra une valeur à virgule flottante.

Pour que Python 2.6 renvoie uniformément des valeurs à virgule flottante, vous pouvez :

from __future__ import division
print(3/2)
Copier après la connexion

La syntaxe de capture des exceptions est modifiée de except exc, var à except exc en tant que var. Utilisez la syntaxe except (exc1, exc2) comme var pour intercepter plusieurs catégories d'exceptions en même temps. Python 2.6 prend déjà en charge les deux syntaxes.

Nouvelle façon d'écrire l'ensemble : {1,2,3,4}. Notez que {} représente toujours un dictionnaire vide (dict).

Compréhensions de dictionnaire {expr1 : expr2 pour k, v in d}, cette syntaxe est équivalente à

result={}
for k, v in d.items():
    result[expr1]=expr2
return result
Copier après la connexion

Définir les compréhensions {expr1 pour x dans stuff}. Cette syntaxe est équivalente à :

result = set()
for x in stuff:
    result.add(expr1)
return result
Copier après la connexion

Le nombre octal doit être écrit sous la forme 0o777. La forme originale 0777 ne peut pas être utilisée ; le nombre binaire doit être écrit sous la forme 0b111. Une nouvelle fonction bin() est ajoutée pour convertir un entier en chaîne binaire. Python 2.6 prend déjà en charge les deux syntaxes.

dict.keys(), dict.values(), dict.items(), map(), filter(), range(), zip() ne renvoient plus des listes, mais des itérateurs.

S'il n'y a pas d'ordre significatif bien défini entre deux objets. Les comparer à l’aide de <, >, <=, >= lèvera une exception. Par exemple, 1 < "" renverra True dans Python 2.6, mais lèvera une exception dans Python 3.0. Désormais, les fonctions cmp(), instance.__cmp__() ont été supprimées.

Vous pouvez annoter les paramètres et renvoyer les valeurs de la fonction. Cette fonctionnalité permet à l'EDI d'effectuer une analyse plus approfondie du code source. Par exemple, ajoutez des informations de catégorie aux paramètres :

def sendMail(from_: str, to: str, title: str, body: str) -> bool:
    pass
Copier après la connexion

Fusionner les types int et long.

Plusieurs modules ont été renommés (selon PEP8) :

Ancien nom

Nouveau nom

_winreg winreg

ConfigParser configparser

copy_reg copyreg

Queue queue

SocketServer socket server

repr reprlib

Le Le module StringIO est maintenant fusionné dans le nouveau module io. Les nouveaux modules md5, gopherlib et autres ont été supprimés. Python 2.6 prend déjà en charge le nouveau module io.

httplib, BaseHTTPServer, CGIHTTPServer, SimpleHTTPServer, Cookie, cookielib sont fusionnés dans le package http.

L'instruction exec est annulée, ne laissant que la fonction exec(). Python 2.6 prend déjà en charge la fonction exec().

Ce qui précède est le contenu du [tutoriel Python] sur les différences entre les versions Python 2.x et 3.x. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois (www.php.cn). !


Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!