Heim  >  Artikel  >  Backend-Entwicklung  >  Was ist Serialisierung in Python? (Beispielanalyse)

Was ist Serialisierung in Python? (Beispielanalyse)

乌拉乌拉~
乌拉乌拉~Original
2018-08-23 13:38:222806Durchsuche

Im folgenden Artikel erfahren wir, was Serialisierung in Python ist. Erfahren Sie mehr über Python-Serialisierung und welche Rolle die Python-Serialisierung bei der Python-Programmierung spielen kann.

Während der Ausführung des Programms befinden sich alle Variablen im Speicher. Definieren Sie beispielsweise ein Diktat:

d = dict(name='Bob', age=20, score=88)

Sie können die Variablen jederzeit ändern, z. B. den Namen in „Bill“ ändern ', aber sobald das Programm endet, wird der gesamte von den Variablen belegte Speicher vom Betriebssystem zurückgefordert. Wenn die geänderte „Bill“ nicht auf der Festplatte gespeichert ist, wird die Variable beim nächsten erneuten Ausführen des Programms erneut auf „Bob“ initialisiert.

Der Prozess des Änderns von Variablen aus dem Speicher in speicherbare oder übertragbare Variablen wird in Python auch als Serialisierung, Marshalling usw. bezeichnet. Es bedeutet dasselbe.

Nach der Serialisierung kann der serialisierte Inhalt auf die Festplatte geschrieben oder über das Netzwerk an andere Maschinen übertragen werden.

Das erneute Einlesen des Variableninhalts aus dem serialisierten Objekt in den Speicher wird wiederum Deserialisierung genannt, also Unpickling.

Python stellt das Pickle-Modul zur Implementierung der Serialisierung bereit.

Zuerst versuchen wir, ein Objekt zu serialisieren und in eine Datei zu schreiben:

>>> import pickle
>>> d = dict(name='Bob', age=20, score=88)
>>> pickle.dumps(d)
b'\x80\x03}q\x00(X\x03\x00\x00\x00ageq\x01K\x14X\x05\x00\x00\x00scoreq\x02KXX\x04\x00\x00\x00nameq\x03X\x03\x00\x00\x00Bobq\x04u.'

Die Methode pickle.dumps() serialisiert jedes Objekt in Bytes und schreibt dann das Byte-Dokument. Oder verwenden Sie eine andere Methode pickle.dump(), um das Objekt direkt zu serialisieren und in ein dateiähnliches Objekt zu schreiben:

>>> f = open('dump.txt', 'wb')
>>> pickle.dump(d, f)
>>> f.close()

Sehen Sie sich die geschriebene dump.txt-Datei an, eine Menge chaotischer Inhalte, diese sind objektintern Von Python gespeicherte Informationen.

Wenn wir ein Objekt von der Festplatte in den Speicher lesen möchten, können wir zuerst den Inhalt in Bytes einlesen und dann die Methode pickle.loads() verwenden, um das Objekt zu deserialisieren, oder wir können pickle.load direkt verwenden ()-Methode deserialisiert ein Objekt direkt von einem dateiähnlichen Objekt. Wir öffnen eine weitere Python-Befehlszeile, um das gerade gespeicherte Objekt zu deserialisieren:

>>> f = open('dump.txt', 'rb')
>>> d = pickle.load(f)
>>> f.close()
>>> d
{'age': 20, 'score': 88, 'name': 'Bob'}

Der Inhalt der Variablen ist zurück!

Natürlich sind diese Variable und die Originalvariable völlig unabhängige Objekte, sie haben nur den gleichen Inhalt.

Das Problem mit Pickle ist das gleiche wie das Serialisierungsproblem, das für alle anderen Programmiersprachen spezifisch ist, nämlich, dass es nur mit Python verwendet werden kann und es möglich ist, dass verschiedene Versionen von Python nicht miteinander kompatibel sind. Daher können mit Pickle nur diejenigen gespeichert werden, die nicht wichtig sind. Es spielt keine Rolle, ob die Daten nicht erfolgreich deserialisiert werden können.

Das Obige ist der gesamte in diesem Artikel beschriebene Inhalt. In diesem Artikel werden hauptsächlich die relevanten Kenntnisse zur Python-Serialisierung vorgestellt. Ich hoffe, dass das, was ich in diesem Artikel beschrieben habe, für Sie hilfreich ist und Ihnen das Erlernen von Python erleichtert.

Weitere Informationen zu diesem Thema finden Sie in der Spalte Python-Tutorial auf der chinesischen PHP-Website.

Das obige ist der detaillierte Inhalt vonWas ist Serialisierung in Python? (Beispielanalyse). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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