[PYTHON] Différences d'identité, d'équivalence et d'alias

J'ai décidé d'écrire un mémorandum pour profiter de cette opportunité pour résumer ce que j'ai fini avec juste une image.

introduction

Cet article est basé sur Fluent Python-Pythonic Thinking and Coding Techniques.

identité

Tout d'abord, du sens du dictionnaire

** 1 Différentes choses sont indiscernables par leur nature. ** ** ** 2 Les choses sont les mêmes pour elles-mêmes dans le temps et dans l'espace. Identité de soi. Indépendance. identité. ** **

Cette fois, j'ai utilisé goo dictionary.

Supposons qu'une personne dont le vrai nom est Lisa travaille sous le nom d'Emma. Dans ce cas, non seulement les noms sont les mêmes, mais le contenu est également le même. Disons aussi qu'une personne nommée Lily se présente à tort comme Lisa. Si ce cas est exprimé par programme

Lisa = {'name': 'Lisa', 'born': 1996, 'job': 'singer'}
Emma = Lisa;
Lily = {'name': 'Lisa', 'born': 1996, 'job': 'singer'}

print(id(Lisa));
print(id(Emma));
print(id(Lily));

print((Lisa) is (Emma));
print((Lisa) is (Lily));

Quand ceci est affiché

4540344832
4540344832
4540344912
True
False

Ça ressemble à ça. Vous pouvez voir que Lisa et Emma ont le même identifiant, mais Lily a un identifiant différent. Même si vous utilisez l'opérateur is, vous pouvez voir que Lisa et Emma affichent False et sont différentes.

Équivalence

Aussi à partir d'une signification de dictionnaire ** 1 La valeur et le prix sont les mêmes. Même prix. ** ** ** 2 Valeur égale (Doch) ** Alors quand j'ai recherché la même valeur

** En logique, dans deux propositions p et q, si l'une est vraie, l'autre est vraie, et si l'une est fausse, l'autre est fausse, alors p et q sont dits équivalents. De plus, lorsque "q si p" et "p si q" sont maintenus en même temps, on dit que p et q ont la même valeur. Valeur égale. Équivalent. Équivalent. ** ** Il a été dit. Puis, comme avant, le programme

Lisa = {'name': 'Lisa', 'born': 1996, 'job': 'singer'}
Emma = Lisa;
Lily = {'name': 'Lisa', 'born': 1996, 'job': 'singer'}

print(id(Lisa));
print(id(Emma));
print(id(Lily));

print((Lisa) is (Emma));
print((Lisa) is (Lily));

print((Lisa) == (Emma));

Je viens d'ajouter print ((Lisa) == (Emma)); à la dernière ligne ... lol Quand ceci est affiché

4431907408
4431907408
4431907488
True
False
True

Ça ressemble à ça. Eh bien, l'ID est différent, mais le contenu est le même, donc si vous utilisez l'opérateur ==, ce sera True.

alias

D'une signification de dictionnaire ** Les alias sont des mots anglais qui ont des significations telles que des pseudonymes, des alias et des noms communs. Dans le domaine informatique, il s'agit d'un mécanisme qui permet de désigner de la même manière un objet ou une entité par plusieurs symboles ou identifiants différents. alias. ** ** Eh bien, c'est comme un surnom. Emma est également un alias pour Lisa.

Résumé

Les deux variables Lisa et Emma sont des alias liés au même objet et identiques. Les objets liés à Lisa et Lily ont la même valeur mais ne sont pas les mêmes. Il y a équivalence. ~~ Il peut ne pas être organisé lol ~~

Postscript

Vous avez souligné que les alias, c'est comme passer par référence. Mais python ne peut pas. Veuillez vous y référer lors du passage par référence en python. FAQ sur la programmation

Recommended Posts

Différences d'identité, d'équivalence et d'alias
Identité et équivalence: is et == en Python
Différence d'authenticité entre Python et JavaScript
Différences entre Ruby et Python dans la portée
Différences entre la syntaxe Python et Java
Différences de multithreading entre Python et Jython
Différences entre queryStringParameters et multiValueQueryStringParameters dans AWS Lambda
Matrice unitaire et matrice inverse: Algèbre linéaire en Python <4>
Calculer la différence entre Pose et Transform avec ROS en Python
Différences de prix par préfecture (2019)
Clipping et normalisation dans TensorFlow
Jugement d'équivalence d'objet en Python
Pile et file d'attente en Python
Unittest et CI en Python