Maison > Article > développement back-end > Expliquez la différence entre python2 et 3
Recommandations d'apprentissage gratuites associées : Tutoriel vidéo Python
La différence entre python2 et python3
Différence
Version 3.0 de python, souvent appelée python3000, appelée py3k . Par rapport aux versions antérieures de Python, il s'agit d'une mise à niveau majeure. Afin de ne pas entraîner trop de charge, python3.0 n'a pas été conçu dans un souci de compatibilité descendante.
De nombreuses conceptions ne sont destinées à aucune des versions antérieures de Python. peut être exécuté normalement sur python3.0 Afin de prendre en charge les programmes existants, python2.6, en tant que version de transition, utilise essentiellement la syntaxe et les bibliothèques de python2.x, tout en envisageant la migration vers python3.0, permettant l'utilisation. de certaines syntaxes et fonctions python3.0.
Il est recommandé que les nouveaux programmes python utilisent la version python3.0 de la syntaxe, à moins que l'environnement d'exécution ne puisse pas installer python3.0 ou que le programme lui-même utilise une bibliothèque tierce qui le fait. ne prend pas en charge python3.0. Les bibliothèques tierces pour python incluent Twisted, py2exe, PIL, etc.
La plupart des bibliothèques tierces travaillent dur pour être compatibles avec la version python3.0 même si python3.0 ne peut pas être utilisé immédiatement. , il est recommandé d'écrire un programme python version 3.0 compatible. Ensuite, utilisez 2.6 et 2.7 pour exécuter
1. Fonction 1.print
L'instruction print a disparu, remplacée par la fonction print(). Python 2.6 et python 2.7 prennent en charge partiellement cette forme de syntaxe d'impression. Les trois formes suivantes sont équivalentes dans. python 2.6 et 2.7.
print "我是菜鸟"print (我是菜鸟) #注意print后边有个空格print("我是菜鸟") #print()不能带有其他任何参数Cependant, python2.6 prend en charge la nouvelle syntaxe print()
from _future_import print_functionprint("我是个菜鸟","我好菜啊",sep=', ')
2.Unicode
Python2 a ASCII type str(), unicode() est séparé et non de type octet. Python3 a désormais des chaînes Unicode (utf-8) et une classe d'octets : byte et bytearrays. Depuis Python3. Le langage possède des règles avancées et quelque peu complexes. La division en Python comporte deux opérateurs / et //. Parlons d'abord de la division Python 2. résultat.
- La division dans python3.x ne fait plus cela, et le résultat de la division entre entiers sera également un nombre à virgule flottante. (Cela peut être compris comme 0/1) Quant à la division //, cette division est appelée division étage, et une opération étage est automatiquement effectuée sur le résultat de la division, ce qui est cohérent dans python2.x et 3.x.
我没女友='I have no girlfriends'print(我没女友)
Notez que la partie décimale n'est pas supprimée, mais que l'opération au sol est effectuée. Si vous souhaitez intercepter la partie décimale, vous devez utiliser la fonction trunc du module mathématique.
4. Exceptions
La gestion des exceptions dans python3 a également légèrement changé Dans python3, nous utilisons as comme mot-clé. La syntaxe de capture des exceptions passe de except exc,var à except exc as var.
Utilisez la syntaxe except(exc1,exc2) as var pour intercepter plusieurs catégories d'exceptions en même temps. python2.6 prend déjà en charge ces deux syntaxes.
· L'instruction raise 2.x utilise des virgules pour séparer le type d'objet lancé et les paramètres. 3.x annule cette étrange méthode d'écriture et appelle directement le constructeur pour lancer l'objet.
À l'ère 2.x, les exceptions dans le code représentent non seulement des erreurs de programme, mais font aussi souvent des choses que les structures de contrôle ordinaires devraient faire. Dans 3.x, on peut voir que les concepteurs ont rendu les exceptions plus spécifiques, seulement. Les instructions de capture d'exception ne peuvent être utilisées que lorsqu'une erreur se produit.5.xrange
En python2, l'utilisation de xrange() pour créer des objets itératifs est très populaire. Par exemple : boucle for ou compréhension de liste/ensemble/dictionnaire.
Cela se comporte beaucoup comme un générateur (c'est-à-dire : "évaluation paresseuse"). Mais ce xrange-iterable est infini, ce qui signifie que vous pouvez parcourir l'infini.
En raison de son évaluation paresseuse, la fonction xrange() est plus rapide que la fonction range() si vous souhaitez la parcourir plusieurs fois (comme une boucle for). Néanmoins, plutôt que d'effectuer une itération une fois, il n'est pas recommandé d'itérer plusieurs fois, de sorte que le générateur repart de zéro à chaque fois.
En python3, range() est implémenté comme xrange(), de sorte qu'une fonction xrange() dédiée n'existe plus (xrange() en python3 lancera une exception nommée.
6. Représentation littérale octale
八进制必须写成0o777,原来的形式0777不能用了;二进制0b111。新增了一个bin()函数用于将一个整数转换成二进制字串。python2.6已经支持这两种语法
7.不等运算符
python2.x中不等于 !=和a8093152e673feb7aba1828c43532094
python3.x中不等于只有!=
8.去掉了repr表达式"
python2.x中反引号"相当于repr函数的作用
python3.x中去掉了"这种写法,只允许repr函数,感觉repr只有debug的时候才用,多数时候还是用str函数来用字符串描述对象。
9.多个模块被改名(根据PEP8)
旧名字 | 新名字 |
---|---|
_winreg | winreg |
ConfigParser | configparser |
copy_reg | copyreg |
Queue | queue |
SocketServer | socketserver |
repr | reprlib |
StringIO模块现在被合并到新的io模组内new,md5,gopherlib等模块被删除 。python2.6已经支援新的io模组。
httplibBase,HTTPServer,CGIHTTPServer,SimpleHTTPServer,Cookie,cookerlib被合并到http包内。取消了exec语句只剩下exec()函数。python2.6已经支援exec()函数。
10.数据类型
python3.x去除了long类型,现在只有一种整型——int
新增了bytes类型,对应于2.x版本的八位串,定义一个butes字面量方法如下
b=b'lalala'type(b)#输出<type 'bytes'>
str对象和bytes对象可以使用encode()(str->bytes)or.decode()(bytes->str)方法互相转换。
s=b.decode()b1=s.encode()
dict的.keys()、.items和.values()方法返回迭代器,而之前的iterkeys()等函数都被遗弃。同事去掉的还有dict.has_key(),用in替代它吧>_<。
总结
总之一句话,用python3吧,不要再倔强了!
才开始学习计算机不久,第一次写博客,如果有问题希望大家指正,希望我们能一起学习一起进步。共勉!
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!