Heim  >  Artikel  >  Backend-Entwicklung  >  Erklären Sie den Unterschied zwischen Python2 und 3

Erklären Sie den Unterschied zwischen Python2 und 3

coldplay.xixi
coldplay.xixinach vorne
2021-01-11 09:28:483214Durchsuche

Erklären Sie den Unterschied zwischen Python2 und 3

Verwandte kostenlose Lernempfehlungen: Python-Video-Tutorial

Der Unterschied zwischen Python2 und Python3

  • Unterschied
  • 1. Einige Änderungen in. py thon3.0
    • 1. print-Funktion
    • 3. Divisionsoperation
    • 5. Mehrere Module wurden umbenannt (gemäß PEP8) 10. Datentyp
    • Referenz
    • Die 3.0-Version von Python wird oft als python3000 oder kurz py3k-Version bezeichnet. Um nicht zu viel Belastung mit sich zu bringen, wurde Python 3.0 nicht im Hinblick auf die Abwärtskompatibilität entwickelt Da frühere Python-Versionen nicht normal auf Python3.0 ausgeführt werden können, handelt es sich bei Python2.6 um eine Übergangsversion, die grundsätzlich die Syntax und Bibliotheken von Python2.x verwendet. Sie berücksichtigt auch die Migration auf Python3.0 und ermöglicht die Verwendung einiger Python3.0-Syntax und -Funktionen. Das Programm empfiehlt die Verwendung der Python3.0-Version der Syntax, es sei denn, die Ausführungsumgebung kann Python3.0 nicht installieren oder das Programm selbst verwendet eine Bibliothek eines Drittanbieters, die Python3 nicht unterstützt .0. Zu den Bibliotheken von Drittanbietern, die Python nicht unterstützen, gehören derzeit Twisted, py2exe, PIL usw.
    • Die meisten Bibliotheken von Drittanbietern arbeiten hart daran, mit Python3.0 kompatibel zu sein. Es wird empfohlen, ein kompatibles Python-Programm der Version 3.0 zu schreiben und es dann mit 2.6 oder 2.7 auszuführen. 1. python3. 0 Einige Änderungen
    • 1. Die print-Anweisung ist weg und wurde durch die Funktion print() ersetzt der Drucksyntax wird in Python2.6 und Python2.7 unterstützt. Die folgenden drei Formen in 2.7 sind äquivalent
    • print "我是菜鸟"print (我是菜鸟) #注意print后边有个空格print("我是菜鸟") #print()不能带有其他任何参数
    •   Python2.6 unterstützt jedoch tatsächlich die neue print()-Syntax
    • from _future_import print_functionprint("我是个菜鸟","我好菜啊",sep=', ')
  • 2. Unicode
  Python2 hat Der ASCII-Typ str() und unicode() ist ein separater, kein Byte-Typ. Jetzt verfügt Python3 über Unicode-Zeichenfolgen (UTF-8) und eine Byte-Klasse: Byte und Bytearrays, da Python3.x-Quelldateien die UTF-8-Codierung verwenden Standardmäßig ist der folgende Code zulässig

3. Im Vergleich zu anderen Sprachen gibt es für die Division in Python zwei Operatoren: / und //. Lassen Sie uns zuerst über die Division Python 2 sprechen. Bei der Division in Python 3.x ist dies nicht mehr der Fall, und das Ergebnis der Division zwischen Ganzzahlen ist ebenfalls eine Gleitkommazahl. (Dies kann als 0/1 verstanden werden)

  Was // Division betrifft, wird diese Division als Floor-Division bezeichnet, und am Ergebnis der Division wird automatisch eine Floor-Operation ausgeführt, die in Python2.x und 3.x konsistent ist.

我没女友='I have no girlfriends'print(我没女友)

     Beachten Sie, dass der Dezimalteil nicht verworfen wird, sondern die Bodenoperation ausgeführt wird. Wenn Sie den Dezimalteil abfangen möchten, müssen Sie die Trunc-Funktion des Mathematikmoduls verwenden.

4. Ausnahmen

 Die Behandlung von Ausnahmen in Python3 hat sich ebenfalls geringfügig geändert. In Python3 verwenden wir as als Schlüsselwort. Die Syntax zum Abfangen von Ausnahmen wurde von „except exc,var“ in „exclusive exc as var“ geändert. Verwenden Sie die Syntax außer(exc1,exc2) als Variable, um mehrere Ausnahmekategorien gleichzeitig abzufangen. Python2.6 unterstützt diese beiden Syntaxen bereits.

·In der 2.x-Ära können alle Arten von Objekten direkt ausgelöst werden. In der 3.x-Ära können nur Objekte geworfen werden, die BaseException erben.

·2.x-Raise-Anweisung verwendet Kommas, um den ausgelösten Objekttyp und die Parameter zu trennen. 3.x bricht diese seltsame Schreibmethode ab und ruft den Konstruktor direkt auf, um das Objekt auszulösen. In der 2.x-Ära stellen Ausnahmen im Code nicht nur Programmfehler dar, sondern führen auch häufig einige Dinge aus, die normale Kontrollstrukturen tun sollten. In 3.x ist ersichtlich, dass Designer Ausnahmen nur dann spezifischer gemacht haben Fehler treten auf. Nur wenn dies geschieht, können wir Ausnahmeabfanganweisungen verwenden, um damit umzugehen.

5. Zum Beispiel: for-Schleife oder Listen-/Satz-/Wörterbuchverständnis.

 Dies verhält sich sehr ähnlich wie ein Generator (dh: „faule Auswertung“). Aber dieses xrange-iterable ist unendlich, was bedeutet, dass es unendlich durchlaufen werden kann.

Aufgrund ihrer verzögerten Auswertung ist die Funktion xrange() schneller als die Funktion range(), wenn Sie sie mehrmals durchlaufen möchten (z. B. in einer for-Schleife). Anstelle einer einmaligen Iteration wird jedoch nicht empfohlen, mehrere Iterationen durchzuführen, sodass der Generator jedes Mal von vorne beginnt.

 In Python3 wird range() wie xrange() implementiert, sodass keine dedizierte xrange()-Funktion mehr existiert (in Python3 löst xrange() eine benannte Ausnahme aus.

6. Oktalliteral bedeutet

  八进制必须写成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&#39;lalala&#39;type(b)#输出<type &#39;bytes&#39;>

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吧,不要再倔强了!
  才开始学习计算机不久,第一次写博客,如果有问题希望大家指正,希望我们能一起学习一起进步。共勉!

Das obige ist der detaillierte Inhalt vonErklären Sie den Unterschied zwischen Python2 und 3. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen