Heim Backend-Entwicklung Python-Tutorial 10 Hauptunterschiede zwischen Python2 und Python3

10 Hauptunterschiede zwischen Python2 und Python3

Oct 19, 2016 pm 04:26 PM
python

1. Leistung

Py3.0 führt den Pystone-Benchmark 30 % langsamer aus als Py2.5. Guido glaubt, dass Py3.0 großen Optimierungsspielraum bietet und gute Optimierungsergebnisse bei String- und Integer-Operationen erzielen kann.

2. Kodierung

Py3.0-Quellcodedateien verwenden standardmäßig die UTF-8-Kodierung, wodurch der folgende Code zulässig ist:

>>> China = 'china'

>>> print(中国)

china

3. Grammatik

1) entfernt und alles durch !=

ersetzt

2) Entfernen Sie „`“ und verwenden Sie repr() für alle

3) Fügen Sie as und with-Schlüsselwörter sowie True, False, None hinzu

4) Ganzzahldivision gibt Gleitkomma zurück Zahlen, um ganzzahlige Ergebnisse zu erhalten, verwenden Sie bitte //

5), um nichtlokale Anweisungen hinzuzufügen. Mit noclocal x können Sie periphere (nicht globale) Variablen direkt zuweisen

6) Entfernen Sie die print-Anweisung und fügen Sie die print()-Funktion hinzu, um dieselbe Funktion zu erreichen. Das Gleiche gilt für die exec-Anweisung, die in exec()

4 geändert wurde. Funktion

1) Die print-Anweisung wurde durch die Funktion print() ersetzt kann verwendet werden, um die alte print Special-Syntax zu ersetzen. Zum Beispiel:

Alt: print „Die Antwort ist“, 2*2

Neu: print(„Die Antwort ist“, 2*2)

Alt: print x , #Verwenden Sie Kommas am Ende, um Zeilenumbrüche zu verhindern

Neu: print(x, end=" ") # Verwenden Sie Leerzeichen, um Zeilen zu ersetzen

Alt: print # Neue Zeilen ausgeben

Neu: print() # Neue Zeile ausgeben

Alt: print >>sys.stderr, „fatal error“

Neu: print("fatal error", file=sys .stderr)

Alt: print (x, y) # Ausgabe repr((x, y))

Neu: print((x, y)) # Anders als print(x, y)!

2) Das Verhalten von sequentiellen Operatoren wie x

3) Eingabefunktion ändert sich jetzt:

Alt:

guess = int(raw_input('Geben Sie eine Ganzzahl ein: ')) #Methode zum Lesen von Tastatureingaben

Neu:

guess = int(input('Geben Sie eine Ganzzahl ein: '))

4) Entfernen Sie das Entpacken von Tupelparametern. Sie können die Funktion nicht wie folgt def(a, (b, c)): pass definieren

5) Neue oktale Wortvariable, die Funktion oct() wird entsprechend geändert. Die Methode für 2. >3.0 sieht so aus:

>>> 0666

SyntaxError: invalid token (, line 1)

>>> 0o666

438

>>> oct(438)

'0o666'

6) Binärliteral und bin()-Funktion

>>> bin hinzugefügt (438 )

'0b110110110'

>>> _438 = '0b110110110'

>>> _438

'0b110110110'

7 ) erweitertes iterierbares Entpacken. In Py3.0 sind a, b, *rest = seq und *rest, a = seq zulässig und erfordern nur zwei Punkte: rest ist ein Listenobjekt und seq ist iterierbar

8) New super() , können Sie keine Parameter mehr an super()

>>> class C(object):

def __init__(self, a):

print ('C.) übergeben ', a)

>>> class D(C):

def __init(self, a):

super().__init__(a) #Call super () ohne Parameter

>>> D(8)

C 8

9) Neue Metaklassensyntax

class Foo(*bases, **kwds):

pass

10) unterstützt den Klassendekorator. Die Verwendung ist die gleiche wie beim Funktionsdekorator:

<__main__.d>>>> def foo(cls_a):

def print_func(self):

print('Hello, world! ')

cls_a.print = print_func

return cls_a

>>> @foo

class C(object):

pass

>>> C().print()

Hallo,

Klassendekorateur kann verwendet werden, um den Trick zu spielen, die Zibetkatze in einen Prinzen zu verwandeln. Weitere Informationen finden Sie in PEP 3129

5. Strings und Byte-Strings

1) Jetzt gibt es nur noch einen String-Typ, str, aber dieser ist fast derselbe wie 2. x-Version von Unicode.

2) Informationen zu Byte-Strings finden Sie im 2. Punkt von „Datentyp“

6 Datentyp

1) Py3.0 hat den langen Typ entfernt. Jetzt gibt es nur einen Ganzzahltyp – int, aber er verhält sich wie long

in Version 2. Die Messmethode ist wie folgt:

>>> b = b'china'

>>> type(b)

3) str-Objekte und Bytes-Objekte können mithilfe von .encode() (str -> bytes) ineinander umgewandelt werden. oder .decode() (Bytes -> str) Methode

>>> s = b.decode()

>>> s

'china'


>>> b1 = s.encode()

>>> b1

b' china'

4) 1. Die .keys(), . Die Methoden items und .values() von dict geben Iteratoren zurück, während die vorherigen Funktionen iterkeys() und andere aufgegeben wurden. Ebenfalls entfernt wurde dict.has_key(), ersetzen Sie es durch in

7. 7. Objektorientiert

1) 1) Einführung abstrakter Basisklassen (ABCs).

2) Containerklassen und Iteratorklassen sind ABCs, daher gibt es im Cellections-Modul viel mehr Typen als in Py2.5

>>> Importsammlungen

>> > print('n'.join(dir(collections)))

Callable

Container

Hashable

ItemsView

Iterable

Iterator

KeysView

Mapping

MappingView

MutableMapping

MutableSequence

MutableSet

NamedTuple

Sequence

Set

Sized

ValuesView

__all__

__builtins__

__doc__

__file__

__name__

_abcoll

_itemgetter

_sys

defaultdict

deque

Darüber hinaus haben numerische Typen auch die ABC-Größe. Zu diesen beiden Punkten siehe PEP 3119 und PEP 3141.

3) Die next()-Methode des Iterators wird in __next__() umbenannt und die integrierte Funktion next() wird hinzugefügt, um die __next__()-Methode des Iterators aufzurufen

4) @abstractmethod ist Hinzugefügt und @abstractproperty zwei Dekoratoren, ist es bequemer, abstrakte Methoden (Eigenschaften) zu schreiben

8 Ausnahmen

1) Ausnahmen werden also von BaseException und StardardError geerbt

2 wird gelöscht) Das Sequenzverhalten der Ausnahmeklasse und des .message-Attributs wurde entfernt

3) Verwenden Sie raise Exception(args) anstelle von raise Exception, args-Syntax

4) Ändern Sie die Syntax von Ausnahmen abfangen und als Schlüsselwörter zur Identifizierung von Ausnahmeinstanzen einführen, in Py2.5:

>>> try:

... raise NotImplementedError('Error')

... außer NotImplementedError , Fehler:

... print error.message

...

Fehler

in Py3.0:

>>> versuchen Sie:

erhöhen Sie NotImplementedError('Error')

außer NotImplementedError als Fehler: #Notieren Sie dies als

print(str(error) )

Fehler

5) Ausnahmekette, da __context__ in Version 3.0a1 nicht implementiert wurde, werden wir nicht über diesen Aspekt sprechen

9 Moduländerungen

• Das cPickle-Modul wurde entfernt und kann durch das Pickle-Modul ersetzt werden. Irgendwann werden wir ein transparentes und effizientes Modul haben.

• Imageop-Modul entfernt

• Audiodev, Bastion, bsddb185, Ausnahmen, Linuxaudiodev, MD5, MimeWriter, Mimify, Popen2, Rexec, Sets, Sha, Stringold, Strop, Sunaudiodev, Timing und entfernt xmllib-Module

• Das bsddb-Modul wurde entfernt (separat veröffentlicht, verfügbar unter http://www.jcea.es/programacion/pybsddb.htm)

• Das neue Modul wurde entfernt

• Die Funktionen os.tmpnam() und os.tmpfile() wurden in das tmpfile-Modul verschoben

• Das tokenize-Modul funktioniert jetzt mit Bytes. Der Haupteinstiegspunkt ist nicht mehr generic_tokens, sondern tokenize.tokenize()

10) xrange() wird in range() umbenannt. Um eine Liste zu erhalten, muss explizit aufgerufen werden:

>>> list(range(10))

[0, 1, 2, 3, 4, 5, 6, 7, 8 , 9]

2) Das Bytes-Objekt kann nicht hashen und unterstützt die Methoden b.lower(), b.strip() und b.split() nicht, aber für die beiden letztgenannten können Sie verwenden b.strip(b' ntrf' ) und b.split(b'') um den gleichen Zweck zu erreichen

3) zip(), map() und filter() geben alle Iteratoren zurück. Die Funktionen apply(), callable(), coerce(), execfile(), Reduce() und reload() wurden alle entfernt

4) string.letters und zugehörige .lowercase und .uppercase wurden entfernt , verwenden Sie stattdessen bitte string.ascii_letters

5) Wenn x

6) Mitglieder der __getslice__-Serie werden aufgegeben. a[i:j] wird in a.__getitem__(slice(I, j)) konvertiert oder __setitem__ und __delitem__ werden je nach Kontext aufgerufen

7) Die Dateiklasse ist in Py2.5 veraltet:

>>> Datei


In Py3.0:

>>> Datei

Traceback (letzter Aufruf last):

Datei "", Zeile 1, in

Datei

NameError: Name 'Datei' ist nicht definiert

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Wie kann man Node.js oder Python -Dienste in Lampenarchitektur effizient integrieren? Wie kann man Node.js oder Python -Dienste in Lampenarchitektur effizient integrieren? Apr 01, 2025 pm 02:48 PM

Viele Website -Entwickler stehen vor dem Problem der Integration von Node.js oder Python Services unter der Lampenarchitektur: Die vorhandene Lampe (Linux Apache MySQL PHP) Architekturwebsite benötigt ...

Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Wie löste ich das Problem der Berechtigungen beim Betrachten der Python -Version in Linux Terminal? Apr 01, 2025 pm 05:09 PM

Lösung für Erlaubnisprobleme beim Betrachten der Python -Version in Linux Terminal Wenn Sie versuchen, die Python -Version in Linux Terminal anzuzeigen, geben Sie Python ein ...

Was ist der Grund, warum Pipeline persistente Speicherdateien bei der Verwendung von Scapy Crawler nicht geschrieben werden kann? Was ist der Grund, warum Pipeline persistente Speicherdateien bei der Verwendung von Scapy Crawler nicht geschrieben werden kann? Apr 01, 2025 pm 04:03 PM

Bei der Verwendung von Scapy Crawler kann der Grund, warum Pipeline persistente Speicherdateien nicht geschrieben werden kann? Diskussion beim Lernen, Scapy Crawler für Data Crawler zu verwenden, begegnen Sie häufig auf eine ...

Was ist der Grund, warum der Python -Prozesspool gleichzeitige TCP -Anfragen behandelt und den Kunden dazu bringt, stecken zu bleiben? Was ist der Grund, warum der Python -Prozesspool gleichzeitige TCP -Anfragen behandelt und den Kunden dazu bringt, stecken zu bleiben? Apr 01, 2025 pm 04:09 PM

Python Process Pool verarbeitet gleichzeitige TCP -Anfragen, die dazu führen, dass der Client stecken bleibt. Bei der Verwendung von Python für die Netzwerkprogrammierung ist es entscheidend, gleichzeitige TCP -Anforderungen effizient zu verarbeiten. ...

Wie kann ich die ursprünglichen Funktionen betrachten, die von Python Functools.Partial Object in intern eingekapselt sind? Wie kann ich die ursprünglichen Funktionen betrachten, die von Python Functools.Partial Object in intern eingekapselt sind? Apr 01, 2025 pm 04:15 PM

Erforschen Sie tief die Betrachtungsmethode von Python Functools.Partialial Object in functools.Partial mit Python ...

Python Cross-Platform Desktop-Anwendungsentwicklung: Welche GUI-Bibliothek ist die beste für Sie? Python Cross-Platform Desktop-Anwendungsentwicklung: Welche GUI-Bibliothek ist die beste für Sie? Apr 01, 2025 pm 05:24 PM

Auswahl der Python-plattformübergreifenden Desktop-Anwendungsentwicklungsbibliothek Viele Python-Entwickler möchten Desktop-Anwendungen entwickeln, die sowohl auf Windows- als auch auf Linux-Systemen ausgeführt werden können ...

Python Hourglass Graph Drawing: Wie vermeiden Sie variable undefinierte Fehler? Python Hourglass Graph Drawing: Wie vermeiden Sie variable undefinierte Fehler? Apr 01, 2025 pm 06:27 PM

Erste Schritte mit Python: Hourglas -Grafikzeichnung und Eingabeüberprüfung In diesem Artikel wird das Problem der Variablendefinition gelöst, das von einem Python -Anfänger im Hourglass -Grafikzeichnungsprogramm auftritt. Code...

Bieten Google und AWS öffentliche PYPI -Bildquellen an? Bieten Google und AWS öffentliche PYPI -Bildquellen an? Apr 01, 2025 pm 05:15 PM

Viele Entwickler verlassen sich auf PYPI (PythonpackageIndex) ...

See all articles