Maison  >  Article  >  développement back-end  >  Qu’est-ce que la sérialisation en python ? (Exemple d'analyse)

Qu’est-ce que la sérialisation en python ? (Exemple d'analyse)

乌拉乌拉~
乌拉乌拉~original
2018-08-23 13:38:222806parcourir

Dans l'article suivant, nous découvrirons ce qu'est la sérialisation en python. Découvrez la sérialisation python et le rôle que la sérialisation python peut jouer dans la programmation python.

Pendant l'exécution du programme, toutes les variables sont en mémoire. Par exemple, définissez un dict :

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

Vous pouvez modifier les variables à tout moment, par exemple en changeant le nom en '. Bill' , mais une fois le programme terminé, toute la mémoire occupée par les variables est récupérée par le système d'exploitation. Si le 'Bill' modifié n'est pas stocké sur le disque, la prochaine fois que vous exécuterez à nouveau le programme, la variable sera à nouveau initialisée à 'Bob'.

Nous appelons le processus de changement de variables de la mémoire à stockables ou transférables. Cela s'appelle décapage en Python. Il est également appelé sérialisation, marshalling, aplatissement, etc. dans d'autres langages.

Après la sérialisation, le contenu sérialisé peut être écrit sur le disque ou transmis à d'autres machines via le réseau.

À son tour, la relecture du contenu variable de l'objet sérialisé dans la mémoire est appelée désérialisation, c'est-à-dire décapage.

Python fournit le module pickle pour implémenter la sérialisation.

Tout d'abord, nous essayons de sérialiser un objet et de l'écrire dans un fichier :

>>> 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.'

La méthode pickle.dumps() sérialise n'importe quel objet en octets, puis vous pouvez mettre les octets Écrivez dans un fichier. Ou utilisez une autre méthode pickle.dump() pour sérialiser directement l'objet et l'écrire dans un objet de type fichier :

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

Regardez le fichier dump.txt écrit, il y a un tas de contenu désordonné, ce sont toutes des informations internes sur les objets enregistrés par Python.

Lorsque nous voulons lire un objet du disque vers la mémoire, nous pouvons d'abord lire le contenu en octets, puis utiliser la méthode pickle.loads() pour désérialiser l'objet, ou nous pouvons utiliser directement pickle.load () La méthode désérialise directement un objet à partir d'un objet de type fichier. On ouvre une autre ligne de commande Python pour désérialiser l'objet que l'on vient de sauvegarder :

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

Le contenu de la variable est de retour !

Bien sûr, cette variable et la variable d'origine sont des objets totalement indépendants, elles ont juste le même contenu.

Le problème avec Pickle est le même que le problème de sérialisation propre à tous les autres langages de programmation, à savoir qu'il ne peut être utilisé qu'avec Python, et il est possible que différentes versions de Python soient incompatibles entre elles, Ainsi, seuls ceux qui ne sont pas importants peuvent être enregistrés avec Pickle. Cela n'a pas d'importance si les données ne peuvent pas être désérialisées avec succès.

Ce qui précède est tout le contenu décrit dans cet article. Cet article présente principalement les connaissances pertinentes de la sérialisation python. J'espère que vous pourrez utiliser les informations pour comprendre le contenu ci-dessus. J'espère que ce que j'ai décrit dans cet article vous sera utile et vous facilitera l'apprentissage de Python.

Pour plus de connaissances connexes, veuillez visiter la colonne Tutoriel Python du site Web php chinois.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn