Vérifiez le comportement lors de l'attribution de Python

Résumé

Confirmation du comportement lors du remplacement

Attribuer des variables int

a = 1
b = 2
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))
a = b   #id de a remplace id de b
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))

résultat

a: 1 b: 2
id_a: 93893417024192 id_b: 93893417024224
a: 2 b: 2
id_a: 93893417024224 id_b: 93893417024224

Remplacez b par une nouvelle variable 3

b = 3   #L'id de b est remplacé par l'id de 3,L'identifiant d'un reste le même
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))

résultat

a: 2 b: 3
id_a: 93893417024224 id_b: 93893417024256

Si la variable est list

a = [1,1]
b = [2,2]
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))
a = b  #id de a remplace id de b
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))
b = [3,3]  #L'id de b est remplacé par l'id de 3,L'identifiant d'un reste le même
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))

résultat

a: [1, 1] b: [2, 2]
id_a: 140361960710984 id_b: 140361960208392
a: [2, 2] b: [2, 2]
id_a: 140361960208392 id_b: 140361960208392
a: [2, 2] b: [3, 3]
id_a: 140361960208392 id_b: 140361960256584

Affectation de la liste à l'élément

a = [1,1]
b = [2,2]
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))
print("id_a[0]:", id(a[0]), "id_b[0]:", id(b[0]))
a = b  #id de a remplace id de b
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))
print("id_a[0]:", id(a[0]), "id_b[0]:", id(b[0]))
b[0] = 3  # b[0]Id est remplacé par id 3 et en même temps un[0]L'ID est également remplacé par l'ID de 3,Les identifiants de a et b restent les mêmes
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))
print("id_a[0]:", id(a[0]), "id_b[0]:", id(b[0]))

résultat

a: [1, 1] b: [2, 2]
id_a: 140361961620360 id_b: 140361958272904
id_a[0]: 93893417024192 id_b[0]: 93893417024224
a: [2, 2] b: [2, 2]
id_a: 140361958272904 id_b: 140361958272904
id_a[0]: 93893417024224 id_b[0]: 93893417024224
a: [3, 2] b: [3, 2]
id_a: 140361958272904 id_b: 140361958272904
id_a[0]: 93893417024256 id_b[0]: 93893417024256

Affectation des éléments de type dict

Lors de l'affectation directement à l'intérieur du dict, l'id du dict ne change pas, mais l'id de l'élément de dict assigné est remplacé. À ce stade, s'il y a une variable qui partage l'id du dict, l'id du dict ne change pas, donc l'élément dict est changé.

a = {0:1}
b = {0:2}
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))
print("id_a[0]:", id(a[0]), "id_b[0]:", id(b[0]))
a = b  #id de a remplace id de b
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))
print("id_a[0]:", id(a[0]), "id_b[0]:", id(b[0]))
b[0] = 3  # b[0]Id est remplacé par id 3 et en même temps un[0]L'ID est également remplacé par l'ID de 3,Les identifiants de a et b restent les mêmes
print("a:",a,"b:",b)
print("id_a:", id(a), "id_b:", id(b))
print("id_a[0]:", id(a[0]), "id_b[0]:", id(b[0]))

résultat

a: {0: 1} b: {0: 2}
id_a: 140362018772456 id_b: 140361986516168
id_a[0]: 93893417024192 id_b[0]: 93893417024224
a: {0: 2} b: {0: 2}
id_a: 140361986516168 id_b: 140361986516168
id_a[0]: 93893417024224 id_b[0]: 93893417024224
a: {0: 3} b: {0: 3}
id_a: 140361986516168 id_b: 140361986516168
id_a[0]: 93893417024256 id_b[0]: 93893417024256

Référence: [FAQ sur la programmation - Documentation Python 3.8.1rc1](https://docs.python.org/ja/3/faq/programming.html#how-do-i-write-a-function-with-output-parameters-call -par référence) Passage par valeur et passage par référence en C # -Qiita Pourquoi ne pas utiliser le mot "passer par référence" en Java, JavaScript, Python, Ruby, etc.? --Qiita Je ne peux plus dire qu'il est passé par référence - Qiita

Recommended Posts

Vérifiez le comportement lors de l'attribution de Python
Vérifiez le comportement du destroyer en Python
[Python] Vérifiez les bibliothèques installées
[Python] Vérifiez le répertoire actuel, déplacez le répertoire
Comportement lors de la liste dans Python heapq
Maîtrisez le type avec Python? (Quand faire la vérification de type)
Comportement lors du retour dans le bloc with
Vérifier l'existence du fichier avec python
[python, multitraitement] Comportement des exceptions lors de l'utilisation du multitraitement
Vérifiez si l'URL existe en Python
Vérifiez le chemin du module importé Python
vérification de la grammaire python
Vérifiez les éléments lorsque le module python importé ne fonctionne pas comme prévu
[python] Vérifier les éléments de la liste tous, tous
Vérifiez si les caractères sont similaires en Python
Quand les fonctions python affectent-elles les arguments de l'appelant?
[python, CPython] Comportement du GC lors de la levée d'une exception
Vérifiez la date du devoir de drapeau avec Python
[Python] Précautions lors de l'affectation de valeurs à des tableaux multidimensionnels
Remarque Python: lors de l'attribution d'une valeur à une chaîne
Comportement lors de l'enregistrement d'un objet datetime python dans MongoDB
[Pour les débutants] Comportement inattendu si "\" est inclus lors de la définition du chemin en Python
Vérifiez si la chaîne est un nombre en python
Trouvez le maximum de Python
Un moyen simple de vérifier la source des modules Python
Remarque Python: lorsque la commande pip ne peut pas être utilisée
Importez audit.log dans Splunk et vérifiez le comportement lorsque Splunk est démarré pour la première fois.
Paramètres initiaux lors de l'utilisation de l'API foursquare avec python
Comportement des arguments par défaut de Python
[python] comportement d'argmax
le zen de Python
Vérifiez types_map lors de l'utilisation de mimetypes avec AWS Lambda (Python)
mélangeur, python, comportement de la sphère
python Spécifie la fonction à exécuter lorsque le programme se termine
Vérifier quand la version ne change pas dans pyenv
Vérification de domaine avec Python
[Python] Fractionner la date
À propos de l'option --enable-shared lors de la construction de Python sous Linux
Python # Vérifier l'identité du type
Vérifiez la nature atrophique de la distribution de probabilité en Python
Vérifier la version avec python
Note Python: Le mystère de l'attribution d'une variable à une variable
[python] Comment vérifier si la clé existe dans le dictionnaire
Vérifiez le fonctionnement de Python pour .NET dans chaque environnement
Solution lorsque l'image ne peut pas être affichée avec tkinter [python]
Comportement à la fin de Linux moins en fonction de la source de connexion
Vérifiez à l'avance ce qui se passe lorsque la commande est exécutée
[Python: UnicodeDecodeError] L'une des solutions d'erreur lors de la lecture de CSV
Vérifier quand le conteneur Docker ne se connecte pas à Internet
Résolvez le problème japonais lors de l'utilisation du module CSV en Python.
python3 Mesurez la vitesse de traitement.
Histoire lors de l'itération d'un tuple python
Vérifiez la couverture de python avec pytest-cov
Trouver des erreurs en Python
Comparons les types de tableaux Python
À propos du module Python venv