


Compréhension approfondie du module de copie en python (copie superficielle et copie profonde)
Présente principalement le module de copie en python.
Le module de copie comprend des fonctions permettant de créer des copies profondes et superficielles d'objets composés, notamment des listes, des tuples, des dictionnaires et des instances d'objets définis par l'utilisateur.
########
copy(x)
########
Créez un nouvel objet composite et Crée une copie superficielle de x en copiant ses membres par référence. Pour le dire plus profondément,
copie l'objet, mais utilise toujours des références pour les éléments de l'objet.
Pour les types intégrés, cette fonction n'est pas souvent utilisée.
Utilisez plutôt des méthodes d'appel telles que list(x), dict(x), set(x), etc. pour créer une copie superficielle de x. Vous devez savoir que
en utilisant directement. le nom du type est évidemment meilleur que l'utilisation de copy() est beaucoup plus rapide. Mais ils obtiennent le même effet.
Un autre point concerne les objets qui ne peuvent pas être modifiés (chaîne, nombre, tuple), car vous n'avez pas à vous soucier de les modifier. Copier ou non n'a aucun
sens.
Autre point, vous pouvez utiliser l'opérateur is pour déterminer si les objets sont copiés.
a est b -> Vrai a et b font référence au même objet, pas à des copies
- -> Faux a et b sont des copies l'un de l'autre
Par exemple , comme suit Exemple, par exemple :
(1)
>>> a = [1,2,3]
>>> = copier .copy(a)
>>> b
[1, 2, 3]
>>> )
>>>a
[1, 2, 3, 4]
>>> , 2 , 3]
>>> a est b
Faux
(2)
>>> [1 ,2,3]
>>> b = a
>>> >
>>> a.append(4)>>> a[1, 2, 3, 4] >>> b[1, 2, 3, 4]>>> > a, b([1, 2, 3, 4, 6], [1, 2, 3, 4, 6])(3)> ;>> a = [1,2,3]>>> b = liste(a)>>> [1, 2, 3]>>> a.append(4)>>> 2, 3, 4]>>>b[1, 2, 3]>>> (4 )>>> a = [[1], ['a'], ['A']]>>> copier( a)>>> imprimer a, b[[1], ['a'], ['A']] [[1], [' a' ], ['A']]>>> b[1].append('b')>>> 🎜> [[1], ['a', 'b'], ['A']]>>> a[[1], ['a ', 'b'], ['A']]>>> b.append([100,101])>>> 🎜> [[1], ['a', 'b'], ['A'], [100, 101]]>>> 1] , ['a', 'b'], ['A']]Dans l'exemple (3), nous pouvons voir l'objet de copie superficielle b de a. Ce sont des objets différents, donc pour. l'objet Les changements de ne s'affecteront pas, mais les éléments de ces objets a et b font référence au même, donc si a ou b change les éléments de son objet, cela affecteraLa valeur d'un autre.
Si vous souhaitez copier complètement un objet et les valeurs de tous les éléments d'un objet, utilisez uniquement la fonction deepcopy() ci-dessous.
######################
deepcopy(x[, visite])
# # #####################
Crée une copie complète de x en créant un nouvel objet composite et en copiant à plusieurs reprises tous les membres de x.
visit est un dictionnaire facultatif dont le but est de garder une trace des objets visités, détectant et évitant ainsi les cycles répétés dans les structures de données définissant
.
Bien que cela ne soit généralement pas nécessaire, la classe
peut implémenter des méthodes de copie personnalisées en implémentant les méthodes __copy__(self) et __deepcopy__(self, visit). opérations de copie profonde respectivement.
La méthode __deepcopy__() doit utiliser la visite du dictionnaire, qui est utilisée pour suivre les objets précédemment rencontrés pendant le processus de copie. Pour la méthode
__deepcopy__(),
n'a pas besoin d'effectuer d'opérations supplémentaires autres que de transmettre la visite aux autres méthodes deepcopy() incluses dans l'implémentation (le cas échéant).
Si la classe implémente les méthodes __getstate__() et __setstate__() utilisées par le module pickle, alors le module de copie utilisera
ces méthodes pour créer une copie.
, mais en implémentant les méthodes __copy__(self) et __deepcopy__(self, visit), la classe
peut implémenter des méthodes de copie personnalisées. Ces deux méthodes implémentent respectivement des opérations de copie superficielle et de copie profonde. .
La méthode __deepcopy__() doit utiliser la visite du dictionnaire, qui est utilisée pour suivre les objets précédemment rencontrés pendant le processus de copie. Pour la méthode
__deepcopy__(),
n'a pas besoin d'effectuer d'autres opérations en plus de passer la visite aux autres méthodes deepcopy() incluses dans l'implémentation (le cas échéant).
Si la classe implémente les méthodes __getstate__() et __setstate__() utilisées par le module pickle, alors le module de copie utilisera
ces méthodes pour créer une copie. , mais en implémentant les méthodes __copy__(self) et __deepcopy__(self, visit), la classe
peut implémenter une méthode de copie personnalisée. Ces deux méthodes implémentent respectivement des opérations de copie superficielle et de copie profonde.
La méthode __deepcopy__() doit utiliser la visite du dictionnaire, qui est utilisée pour suivre les objets précédemment rencontrés pendant le processus de copie. Pour la méthode
__deepcopy__(),
n'a pas besoin d'effectuer d'autres opérations en plus de passer la visite aux autres méthodes deepcopy() incluses dans l'implémentation (le cas échéant).
Si la classe implémente les méthodes __getstate__() et __setstate__() utilisées par le module pickle, alors le module de copie utilisera
ces méthodes pour créer des copies.
par exemple :
>>> a = [[1], ['a'], ['A']]
>>> ; importer une copie
>>> b = copy.deepcopy(a)
>>> '], ['A']]
>>> c = copy.copy(a)
>>> 1], ['a'], ['A']]
>>> a[1].append('b')
>>> une
[[1], ['a', 'b'], ['A']]
>>> ], ['a'], ['A']]
>>> c
[[1], ['a', 'b'], [' A']]
Il convient de noter que :
(1) Le module de copie est utilisé pour les types simples comme les entiers et les chaînes, mais cela est rarement nécessaire.
(2) Ces fonctions de copie ne peuvent pas fonctionner avec des modules, des objets de classe, des fonctions, des méthodes, des traces, des cadres de pile, des fichiers, des sockets et d'autres types similaires.
Si l'objet ne peut pas être copié, une exception copy.error sera levée.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

L'article traite des bibliothèques Python populaires comme Numpy, Pandas, Matplotlib, Scikit-Learn, Tensorflow, Django, Flask et Demandes, détaillant leurs utilisations dans le calcul scientifique, l'analyse des données, la visualisation, l'apprentissage automatique, le développement Web et H et H

Comment Uvicorn écoute-t-il en permanence les demandes HTTP? Uvicorn est un serveur Web léger basé sur ASGI. L'une de ses fonctions principales est d'écouter les demandes HTTP et de procéder ...

Fastapi ...

Les expressions régulières sont des outils puissants pour la correspondance des motifs et la manipulation du texte dans la programmation, améliorant l'efficacité du traitement de texte sur diverses applications.

Dans Python, comment créer dynamiquement un objet via une chaîne et appeler ses méthodes? Il s'agit d'une exigence de programmation courante, surtout si elle doit être configurée ou exécutée ...

L'article traite du rôle des environnements virtuels dans Python, en se concentrant sur la gestion des dépendances du projet et l'évitement des conflits. Il détaille leur création, leur activation et leurs avantages pour améliorer la gestion de projet et réduire les problèmes de dépendance.
