Heim > Artikel > Backend-Entwicklung > Erklären Sie den Unterschied zwischen Python2 und 3
Verwandte kostenlose Lernempfehlungen: Python-Video-Tutorial
Der Unterschied zwischen Python2 und Python3
print "我是菜鸟"print (我是菜鸟) #注意print后边有个空格print("我是菜鸟") #print()不能带有其他任何参数
from _future_import print_functionprint("我是个菜鸟","我好菜啊",sep=', ')2. Unicode
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(我没女友)
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'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吧,不要再倔强了!
才开始学习计算机不久,第一次写博客,如果有问题希望大家指正,希望我们能一起学习一起进步。共勉!
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!