Typage dynamique de Python

Aperçu

Notes d'étude pour First Python 3rd Edition

ordre du jour

--Python sans déclaration de type --Référence partagée

Typage dynamique de Python

Python sans déclaration de type

Créer des variables

a = 3

Informations de type

Gestion des variables lors de l'exécution d'un programme

--Tous remplacés par l'objet correspondant

WS000427.png

Collecte des ordures

Référence partagée

a = 3
b = a

Comment est-ce

WS000428.png

De cette façon, ** une situation où plusieurs variables sont des références au même objet ** est appelée une ** référence partagée **.

Ensuite, ajoutez une ligne au code précédent

a = 3
b = a
a = 'spam'

C'est comme ça La variable a sert de référence à l'objet string nouvellement créé "pam", mais la variable b reste une référence à l'objet 3.

WS000429.png

Référence partagée et remplacement d'objet

Une liste est un tableau d'objets entre crochets qui peuvent être écrasés.

Dans l'exemple ci-dessous, L2 reste une référence à «[2, 3, 4]»

L1 = [2, 3, 4]
L2 = L1
L1 = 24

Dans l'exemple suivant, la valeur de l'objet de référence est écrasée.

#Objet variable
>>> L1 = [2, 3, 4]

#Faire une autre référence au même objet
>>> L2 = L1

#Écraser les éléments
>>> L1[0] = 24

#Des modifications ont été apportées à la liste correspondant à L1
>>> L1
[24, 3, 4]

#Cela affecte également L2!
>>> L2
[24, 3, 4]

Si vous copiez par la méthode suivante, L2 ne sera pas modifié et ** 2 variables indiqueront différentes zones de mémoire **

#Objet variable
>>> L1 = [2, 3, 4]

#Faire une copie de L1
>>> L2 = L1[:]

#Écraser les éléments
>>> L1[0] = 24

#Des modifications ont été apportées à la liste correspondant à L1
>>> L1
[24, 3, 4]

#L2 ne change pas
>>> L2
[2, 3, 4]

"Equivalent" et "même"

>>> x = 42

#Le 42 sera-t-il bientôt détruit?
>>> x = 'shrubbery'

** En Python, les petits entiers et les chaînes avec un petit nombre de caractères sont mis en cache et réutilisés **

** Il existe deux types de comparaisons pour savoir si les objets sont «identiques» **

>>> L = [1, 2, 3]

#M et L sont des références pour le même objet
>>> M = L

#Comparaison de savoir si les deux sont "équivalents"
>>> L == M
True

#Comparaison de savoir s'ils sont "identiques"
>>> L is M
True
>>> L = [1, 2, 3]

#Les objets auxquels M et L correspondent sont différents
>>> M = [1, 2, 3]

#Les deux valeurs sont les mêmes
>>> L == M
True

#Deux objets sont équivalents mais pas identiques
>>> L is M
False

** Si vous faites la même chose pour des nombres plus petits, les résultats peuvent être différents **

--Dans les cas suivants, X et Y sont équivalents mais pas identiques

>>> X = 42

#Les deux 42 ne devraient pas être les mêmes
>>> Y = 42
>>> X == Y
True

#Les deux seront les mêmes car ils seront mis en cache!
>>> X is Y
True

Recommended Posts

Typage dynamique de Python
Typage Python
Python
Attente de téléchargement dynamique Python Selenium
Proxy dynamique avec python, ruby, PHP
Mémo d'automatisation de saisie par Python débutant
python kafka
Les bases de Python ⑤
Résumé Python
Python intégré
Technique Python
Étudier Python
Compte à rebours Python 2.7
Mémorandum Python
astuces python
fonction python ①
Les bases de Python
Mémo Python
ufo-> python (3)
Installer python
Python Singleton
Les bases de Python ④
Mémorandum Python 2
mémo python
Python Jinja2
Incrément Python
atCoder 173 Python
[Python] fonction
Installation de Python
Installer Python 3.4.3.
Essayez Python
Itératif Python
Algorithme Python
Python2 + mot2vec
[Python] Variables
Fonctions Python
Python sys.intern ()
Tutoriel Python
Fraction Python
underbar python C'est ce que
Résumé Python
Démarrer python
[Python] Trier
Remarque: Python
Les bases de Python ③
Sortie du journal python
Les bases de Python
[Scraping] Scraping Python
Mise à jour Python (2.6-> 2.7)
mémo python
Mémorandum Python
Python #sort
ufo-> python
Python nslookup
apprentissage de python
[Rpmbuild] Python 3.7.3.