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ß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)

PHP und Python: Code Beispiele und Vergleich PHP und Python: Code Beispiele und Vergleich Apr 15, 2025 am 12:07 AM

PHP und Python haben ihre eigenen Vor- und Nachteile, und die Wahl hängt von den Projektbedürfnissen und persönlichen Vorlieben ab. 1.PHP eignet sich für eine schnelle Entwicklung und Wartung großer Webanwendungen. 2. Python dominiert das Gebiet der Datenwissenschaft und des maschinellen Lernens.

Python gegen JavaScript: Community, Bibliotheken und Ressourcen Python gegen JavaScript: Community, Bibliotheken und Ressourcen Apr 15, 2025 am 12:16 AM

Python und JavaScript haben ihre eigenen Vor- und Nachteile in Bezug auf Gemeinschaft, Bibliotheken und Ressourcen. 1) Die Python-Community ist freundlich und für Anfänger geeignet, aber die Front-End-Entwicklungsressourcen sind nicht so reich wie JavaScript. 2) Python ist leistungsstark in Bibliotheken für Datenwissenschaft und maschinelles Lernen, während JavaScript in Bibliotheken und Front-End-Entwicklungsbibliotheken und Frameworks besser ist. 3) Beide haben reichhaltige Lernressourcen, aber Python eignet sich zum Beginn der offiziellen Dokumente, während JavaScript mit Mdnwebdocs besser ist. Die Wahl sollte auf Projektbedürfnissen und persönlichen Interessen beruhen.

Detaillierte Erklärung des Docker -Prinzips Detaillierte Erklärung des Docker -Prinzips Apr 14, 2025 pm 11:57 PM

Docker verwendet Linux -Kernel -Funktionen, um eine effiziente und isolierte Anwendungsumgebung zu bieten. Sein Arbeitsprinzip lautet wie folgt: 1. Der Spiegel wird als schreibgeschützte Vorlage verwendet, die alles enthält, was Sie für die Ausführung der Anwendung benötigen. 2. Das Union File System (UnionFS) stapelt mehrere Dateisysteme, speichert nur die Unterschiede, speichert Platz und beschleunigt. 3. Der Daemon verwaltet die Spiegel und Container, und der Kunde verwendet sie für die Interaktion. 4. Namespaces und CGroups implementieren Container -Isolation und Ressourcenbeschränkungen; 5. Mehrere Netzwerkmodi unterstützen die Containerverbindung. Nur wenn Sie diese Kernkonzepte verstehen, können Sie Docker besser nutzen.

Python: Automatisierung, Skript- und Aufgabenverwaltung Python: Automatisierung, Skript- und Aufgabenverwaltung Apr 16, 2025 am 12:14 AM

Python zeichnet sich in Automatisierung, Skript und Aufgabenverwaltung aus. 1) Automatisierung: Die Sicherungssicherung wird durch Standardbibliotheken wie OS und Shutil realisiert. 2) Skriptschreiben: Verwenden Sie die PSUTIL -Bibliothek, um die Systemressourcen zu überwachen. 3) Aufgabenverwaltung: Verwenden Sie die Zeitplanbibliothek, um Aufgaben zu planen. Die Benutzerfreundlichkeit von Python und die Unterstützung der reichhaltigen Bibliothek machen es zum bevorzugten Werkzeug in diesen Bereichen.

So führen Sie Programme in der terminalen VSCODE aus So führen Sie Programme in der terminalen VSCODE aus Apr 15, 2025 pm 06:42 PM

Im VS -Code können Sie das Programm im Terminal in den folgenden Schritten ausführen: Erstellen Sie den Code und öffnen Sie das integrierte Terminal, um sicherzustellen, dass das Codeverzeichnis mit dem Terminal Working -Verzeichnis übereinstimmt. Wählen Sie den Befehl aus, den Befehl ausführen, gemäß der Programmiersprache (z. B. Pythons Python your_file_name.py), um zu überprüfen, ob er erfolgreich ausgeführt wird, und Fehler auflösen. Verwenden Sie den Debugger, um die Debugging -Effizienz zu verbessern.

Wofür ist VSCODE Wofür ist VSCODE? Wofür ist VSCODE Wofür ist VSCODE? Apr 15, 2025 pm 06:45 PM

VS Code ist der vollständige Name Visual Studio Code, der eine kostenlose und open-Source-plattformübergreifende Code-Editor und Entwicklungsumgebung von Microsoft ist. Es unterstützt eine breite Palette von Programmiersprachen und bietet Syntax -Hervorhebung, automatische Codebettel, Code -Snippets und intelligente Eingabeaufforderungen zur Verbesserung der Entwicklungseffizienz. Durch ein reiches Erweiterungs -Ökosystem können Benutzer bestimmte Bedürfnisse und Sprachen wie Debugger, Code -Formatierungs -Tools und Git -Integrationen erweitern. VS -Code enthält auch einen intuitiven Debugger, mit dem Fehler in Ihrem Code schnell gefunden und behoben werden können.

Kann Visual Studio -Code in Python verwendet werden Kann Visual Studio -Code in Python verwendet werden Apr 15, 2025 pm 08:18 PM

VS -Code kann zum Schreiben von Python verwendet werden und bietet viele Funktionen, die es zu einem idealen Werkzeug für die Entwicklung von Python -Anwendungen machen. Sie ermöglichen es Benutzern: Installation von Python -Erweiterungen, um Funktionen wie Code -Abschluss, Syntax -Hervorhebung und Debugging zu erhalten. Verwenden Sie den Debugger, um Code Schritt für Schritt zu verfolgen, Fehler zu finden und zu beheben. Integrieren Sie Git für die Versionskontrolle. Verwenden Sie Tools für die Codeformatierung, um die Codekonsistenz aufrechtzuerhalten. Verwenden Sie das Lining -Tool, um potenzielle Probleme im Voraus zu erkennen.

Ist die VSCODE -Erweiterung bösartig? Ist die VSCODE -Erweiterung bösartig? Apr 15, 2025 pm 07:57 PM

VS -Code -Erweiterungen stellen böswillige Risiken dar, wie das Verstecken von böswilligem Code, das Ausbeutetieren von Schwachstellen und das Masturbieren als legitime Erweiterungen. Zu den Methoden zur Identifizierung böswilliger Erweiterungen gehören: Überprüfung von Verlegern, Lesen von Kommentaren, Überprüfung von Code und Installation mit Vorsicht. Zu den Sicherheitsmaßnahmen gehören auch: Sicherheitsbewusstsein, gute Gewohnheiten, regelmäßige Updates und Antivirensoftware.

See all articles