J'ai étudié en détail le traitement des variables en python

Cliquez ici pour l'article sur le blog de gestion Conception d'une excellente méthode de sauvegarde d'objets en python

Ici, je vais écrire sur le traitement des variables python comme vu dans l'interpréteur. Si vous souhaitez exécuter à partir d'un fichier, essayez bien Google.

Je pense que la principale chose à faire est "où vous voulez appeler une variable (où vous faites quelque chose comme var), faites" print var "", mais ...

Comment créer des variables

Remplissez simplement la commande "variable = objet".

test


var = 9

Comment appeler

Cependant, "var" est déprimé

test


var #9

Que se passe-t-il dans les coulisses lors de la définition des variables (peut-être)

  1. Enregistrer la variable (var)

  2. Préparez un pointeur (= travail) et stockez la destination d'enregistrement de l'objet dans une variable.

  3. Affectation de la valeur réelle (objet) (9 dans ce cas) Ceux qui sont inclus dans l'espace mémoire d'Object

  4. Valeur de l'objet (9)

  5. Informations de type (c'est-à-dire type de données, nombre entier)

  6. Compteur de référence (adresse contenant des variables) "

  7. Lors de l'appel, il suffit de se référer à l'objet en utilisant "Pointer" Le pointeur est défini par "=". S'il n'y a pas de =, vous obtiendrez une erreur de syntaxe

Exemple spécifique Que se passe-t-il lorsque var1 = var

erreur "Var1 appelle var, puis var appelle l'objet 9." correct "Var1 fait référence au même objet que la var. Var1 appelle directement l'objet 9."

Confirmation ① var1 = var

Tout d'abord, laissez var1 = var. Ici, l'hypothèse est posée comme suit (c'est un système très scientifique ...)

var1**Directement**Référencer l'adresse d'un objet signifie
var1 et var sont (devraient) être complètement indépendants.
Quelque chose de nouveau dans var**Substitution(=)**Et voyez.
Si var est complètement indépendant de var1, vous pouvez affecter un nouvel objet à var
La valeur de var1 ne doit pas changer

Essaie.

test


var = 20
var1 = var

var = 30 #Puisque var1 n'a rien à voir avec var, la valeur de var1 doit rester la même.

var #30
var1 = 20

Confirmation (2) Essayez ** d'ajouter ** une nouvelle valeur avec l'ajout de la liste.

Comme ils doivent faire référence à la même valeur, s'il s'agit de ** ajouter ** au lieu de ** affectation (=) **, les deux valeurs doivent changer.

test


list1 = [1,2]  #list1 [1,2]
list2 = list1  #list2 [1,2]
		
list1.append(3) # " = "N'est pas utilisé, donc une nouvelle valeur est ajoutée à la destination de référence de list2

list1 #[1,2,3]
list2 #[1,2,3]

Après tout, à moins qu'il ne s'agisse d'une affectation, il semble que la destination de référence de la variable soit exactement la même. Si vous ajoutez ou découpez **, les deux variables (ici list1 et list2) changeront. (Je me fâche ...)

En d'autres termes

  1. Attribuez une valeur à une nouvelle variable (use =) -> Créez un nouvel objet pour qu'il devienne complètement indépendant les uns des autres.
  2. N'attribuez pas de nouvelle valeur à la variable (= ne pas utiliser) -> Puisque la destination de référence est la même, si vous modifiez l'une ou l'autre, les deux valeurs changeront

Le fait est que si vous ajoutez list1 = [1,2] au milieu, ** list1 et list2 seront complètement indépendants **, donc le résultat devrait changer!

test


list1 = [1,2]  #list1 [1,2]
list2 = list1  #list2 [1,2]

list = [1,2]  #Les valeurs sont les mêmes," = "Est utilisé, donc un objet complètement nouveau est créé et est indépendant (devient non pertinent) de list2.

list1.append(3) # " = "N'est pas utilisé, mais la valeur est ajoutée à l'objet list1 nouvellement créé. list2 n'est pas pertinent, alors laissez-le tel quel

list1 #[1,2,3]
list2 #[1,2]

C'est pourquoi j'en suis personnellement tombé amoureux. (Si vous ne le comprenez pas de votre propre esprit, vous ne le comprendrez jamais même si vous le lisez ...)

Recommended Posts

J'ai étudié en détail le traitement des variables en python
J'ai essayé d'étudier le processus avec Python
Traitement de fichiers en Python
Traitement de texte avec Python
Traitement des requêtes en Python
À propos de __all__ en python
Je souhaite intégrer une variable dans une chaîne Python
Traitement de texte UTF8 avec python
J'ai écrit python en japonais
Traitement asynchrone (threading) en python
Collection de traitement d'image en Python
Je comprends Python en japonais!
Ce que j'ai appris en Python
Utilisation du mode Python dans le traitement
À propos de "for _ in range ():" de python
Une histoire sur la tentative d'implémentation de variables privées en Python.
Traitement du signal en Python (1): transformée de Fourier
À propos de Python et Cython dtype
À propos du traitement des paramètres dans le fichier request.args de Flask
J'ai écrit Fizz Buzz en Python
Scikit-learn ne peut pas être installé en Python
J'ai écrit la file d'attente en Python
J'ai essayé la notification de ligne en Python
J'ai écrit la pile en Python
J'ai mis Python 2.7 dans Sakura VPS 1 Go.
J'ai essayé d'implémenter PLSA en Python
J'ai essayé d'implémenter la permutation en Python
J'ai fait un programme de gestion de la paie en Python!
J'ai essayé d'implémenter PLSA dans Python 2
J'ai essayé d'utiliser l'optimisation bayésienne de Python
Je ne peux pas déboguer les scripts python dans Eclipse
J'ai défini des variables d'environnement dans Docker et je les ai affichées en Python.
Je veux expliquer en détail la classe abstraite (ABCmeta) de Python
J'ai essayé d'implémenter la régression logistique de Cousera en Python
J'ai essayé d'implémenter ADALINE en Python
Je voulais résoudre ABC159 avec Python
J'ai essayé d'implémenter PPO en Python
Traitez facilement des images en Python avec Pillow
J'ai cherché un nombre premier avec python
J'ai créé un outil de mot de passe en Python.
Traitement des interdictions en double dans la banque de données GAE / Python
Statut de chaque système de traitement Python en 2020
Pourquoi ne puis-je pas installer matplotlib avec python! !!
Différences dans le traitement des chaînes entre Python, Ruby, JS et PHP (combinaison et expansion de variables)
Traitement asynchrone en Python: référence inverse asyncio
Je veux faire le test de Dunnett en Python
J'ai essayé d'implémenter le filtre anti-spam bayésien de Robinson avec python
Un mémo que j'ai écrit un tri rapide en Python
Comment incorporer des variables dans des chaînes python
Python: j'ai pu récurer en lambda
Je veux créer une fenêtre avec Python
J'ai essayé de jouer à un jeu de frappe avec Python
Quand j'essaye matplotlib en Python, il dit 'cairo.Context'
Afficher le résultat du traitement de la géométrie en Python
J'ai essayé de simuler "Birthday Paradox" avec Python
J'ai essayé la méthode des moindres carrés en Python
J'ai écrit une classe en Python3 et Java
J'ai écrit "Introduction à la vérification des effets" en Python
[Python] J'ai joué avec le traitement du langage naturel ~ transformers ~
Pensez aux recherches de priorité de profondeur et de priorité de largeur en Python