Comment ça se passe ?

Fermé
apitos Messages postés 46 Date d'inscription vendredi 6 avril 2012 Statut Membre Dernière intervention 9 décembre 2021 - 3 avril 2021 à 11:03
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 - 3 avril 2021 à 16:18
Bonjour,

Exemple :

s = "Hello"
s +=" World!"


=>
S = "Hello World!"




Dans une concaténation de chaînes, comment se déroule le processus d'allocation de la nouvelle valeur en mémoire, sans effacer ni perdre le nom de la variable?

La création de la nouvelle chaîne sera-t-elle enregistrée dans une variable temporaire avant de mettre à jour la valeur de S ?

Merci d'avance.

3 réponses

fermiparadoxx Messages postés 11645 Date d'inscription samedi 19 août 2017 Statut Membre Dernière intervention 8 juin 2022 5 938
3 avril 2021 à 11:56
Bonjour,

Lisez ceci
0
jee pee Messages postés 39585 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 19 avril 2024 9 225
Modifié le 3 avril 2021 à 12:03
Bonjour,

Moi ce que je déduis du texte, c'est qu'une variable, c'est une adresse (en mémoire) et surement une longueur, un type, ... Donc l'opération de concaténation s'effectue à une adresse, une position mémoire, différente de la chaine originale et une fois terminée la variable se voit affecter l'adresse et la longueur de la nouvelle chaine. Puis surement que la position originale en mémoire est rendue disponible au système.

0
apitos Messages postés 46 Date d'inscription vendredi 6 avril 2012 Statut Membre Dernière intervention 9 décembre 2021 1
3 avril 2021 à 12:59
Bonjour fermiparadoxx, jee pee,

Il y a donc une variable temporaire créée (case mémoire) pour effectuer la concaténation, puis elle sera détruite après la mise à jour de la variable s?
0
jee pee Messages postés 39585 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 19 avril 2024 9 225 > apitos Messages postés 46 Date d'inscription vendredi 6 avril 2012 Statut Membre Dernière intervention 9 décembre 2021
3 avril 2021 à 13:51
non pour moi il y a une nouvelle case mémoire créée pour faire l'opération, et après concaténation l'adresse de cette case est affectée à la variable de départ

une variable n'étant qu'un pointeur, ex s est stockée à l'adresse 0xf122 et elle a une taille de 1a
la concaténation est effectuée à l'adresse 0xd120, une fois l'opération réalisée s prend comme adresse 0xd120 et la position originale 0xf122 est libérée, réattribuée au système
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471 > jee pee Messages postés 39585 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 19 avril 2024
3 avril 2021 à 16:18
Je pense qu'une variable en Python est tout autre chose qu'un pointeur.
Du point de vue du programmeur Python, une variable, c'est un élément abstrait avec lequel il peut interagir.
Ces interactions sont indépendantes de la technique utilisée par Python pour mémoriser les informations.
Bien que ce soit peu probable, rien n'empeche Python de mémoriser le résultat d'une concaténation de deux chaines comme une liste des deux chaines d'origine.
0
yg_be Messages postés 22707 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 19 avril 2024 1 471
3 avril 2021 à 16:02
bonjour,
Quand on utilise un langage tel que Python, on travaille indépendamment de l'allocation en mémoire, et de ce que fait réellement le processeur de l'ordinateur.
Python utilise la mémoire et alloue de la memoire comme il le veut, le programmeur Python n'a pas accès à tout cela.

Il est donc incorrect de faire un lien entre "variable" et allocation en mémoire.
0