Maison  >  Article  >  développement back-end  >  La différence entre l'affectation en python et en langage C

La différence entre l'affectation en python et en langage C

爱喝马黛茶的安东尼
爱喝马黛茶的安东尼original
2019-06-24 13:09:293505parcourir

La différence entre l'affectation en python et en langage C

Quelle est la différence entre l'affectation en python et en langage C ? Voyons d'abord à quoi ressemble un simple code Python en mémoire :

b = 3
b = b + 5

Le schéma de fonctionnement en mémoire est le suivant :

La différence entre laffectation en python et en langage C

Cependant, d'après le sens littéral du code, "Attribuez 3 à b, ajoutez 5 à b puis assign Give b. "

Autrement dit, le code ressemble à ceci :

b ← 3
b ← b + 5

Donc, le schéma de fonctionnement suivant en mémoire est peut-être plus conforme à notre intuition :

La différence entre laffectation en python et en langage C

C'est-à-dire que la valeur de b + 5 est réécrite dans b. Voici à quoi ressemble un programme C typique. Allouez une unité de mémoire de type int pour la variable b, puis stockez l'entier 3 dans l'unité de mémoire. b représente le bloc d'espace mémoire et ne sera plus déplacé. La valeur de b peut être mise à jour, mais l'adresse de b dans la mémoire ne changera plus. On dit donc b = b + 5, ce qui est égal à b ← b + 5. Après avoir ajouté 5 à la valeur de b, il est toujours placé dans b. La variable b est étroitement liée à l'espace mémoire où elle réside.

Recommandations associées : "Tutoriel vidéo Python"

En regardant le diagramme de mémoire en Python ci-dessus, b + 5 obtient une nouvelle valeur, puis b pointe vers celle-ci nouvelle valeur. En d'autres termes, ce qu'il fait est ceci :

b → 3
b → b + 5

définit b pour qu'il pointe vers 3, puis définit b pour qu'il pointe vers la nouvelle valeur de b + 5.

Le programme C met à jour la valeur stockée dans l'unité mémoire, tandis que Python met à jour le pointeur de la variable.

Les variables dans les programmes C stockent une valeur, tandis que les variables en Python pointent vers une valeur.

Si le programme C manipule indirectement les données en manipulant les adresses mémoire (chaque variable correspond à une adresse mémoire fixe, donc manipuler des variables signifie manipuler les adresses mémoire), et que les données sont en position passive, alors Python les manipule directement . Les données, les données sont en position active, et les variables n'existent qu'en tant que relation de référence et n'ont plus de fonction de stockage.

En Python, chaque donnée occupe un espace mémoire. Par exemple, la nouvelle donnée b+5 occupe également un tout nouvel espace mémoire.

Cette opération de Python fait des données le sujet, et les données interagissent directement avec les données.

Les données sont appelées un objet en Python.

Cette phrase n'est pas trop stricte. Mais cela fonctionne dans cet exemple simple.

Un entier 3 est un objet de type int, un 'hello' est un objet chaîne et un [1, 2, 3] est un objet liste.

Python considère toutes les données comme des "objets". Il alloue un espace mémoire pour chaque objet. Une fois un objet créé, son identifiant ne change plus.

id est l'abréviation d'identité. Cela signifie « identité ; identification ».

En Python, vous pouvez utiliser id() pour obtenir l'identifiant d'un objet, qui peut être considéré comme l'adresse de l'objet en mémoire.

Une fois qu'un objet est créé, il ne peut pas être détruit directement. Par conséquent, dans l'exemple précédent, la variable b pointe d'abord vers l'objet 3, puis continue d'exécuter b + 5. b + 5 génère un nouvel objet 8. Puisque l'objet 3 ne peut pas être détruit, laissez b pointer vers le nouvel objet 8, à la place d'utiliser l'objet 8 pour écraser l'objet 3. Une fois l'exécution du code terminée, il y a toujours l'objet 3 et l'objet 8 dans la mémoire, et la variable b pointe vers l'objet 8.

S'il n'y a pas de variable pointant vers l'objet 3 (c'est-à-dire qu'il ne peut pas être référencé), Python utilisera l'algorithme de récupération de place pour décider s'il doit le recycler (c'est automatique et ne nécessite pas que le programmeur s'inquiète à ce sujet).

Un ancien objet ne peut pas être écrasé. Les nouvelles données générées en raison de l'interaction avec l'ancien objet seront placées dans le nouvel objet. En d’autres termes, chaque objet est un individu indépendant, et chaque objet possède sa propre « souveraineté ». Par conséquent, l’interaction de deux objets peut produire un nouvel objet sans affecter l’objet d’origine. Dans les grands programmes, les interactions entre objets sont complexes, et cette indépendance rend ces interactions sécurisées.

Les programmes C allouent une adresse mémoire fixe à chaque variable, ce qui garantit l'indépendance entre les variables C.

Le langage C est l'interaction entre les variables (c'est-à-dire les adresses mémoire), et Python est l'interaction entre les objets (les données). Ce sont deux manières différentes d’interagir.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn