Comment ça se passe ?

Signaler
Messages postés
42
Date d'inscription
vendredi 6 avril 2012
Statut
Membre
Dernière intervention
3 avril 2021
-
Messages postés
15205
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 avril 2021
-
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

Messages postés
10745
Date d'inscription
samedi 19 août 2017
Statut
Membre
Dernière intervention
16 avril 2021
5 281
Bonjour,

Lisez ceci
Messages postés
31595
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
17 avril 2021
7 557
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.

Messages postés
42
Date d'inscription
vendredi 6 avril 2012
Statut
Membre
Dernière intervention
3 avril 2021
1
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?
Messages postés
31595
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
17 avril 2021
7 557 >
Messages postés
42
Date d'inscription
vendredi 6 avril 2012
Statut
Membre
Dernière intervention
3 avril 2021

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
Messages postés
15205
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 avril 2021
832 >
Messages postés
31595
Date d'inscription
mercredi 2 mai 2007
Statut
Modérateur
Dernière intervention
17 avril 2021

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.
Messages postés
15205
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 avril 2021
832
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.