alist += [4]
et alist = alist + [4]
sont différents car le premier change la référence de alist alors que ce dernier ne le fait pas. J'ai essayé ceci ci-dessous sur IDLE en utilisant id()
et il semble que c'est une affirmation correcte.Obtenir l'adresse mémoire en Python, identifier s'il s'agit d'une liste ou d'un dictionnaire et mettre à jour son contenu
code exécuté sur IDLE (Python 3.6.1)
>>> alist = [1, 2, 3]
>>> id(alist)
50683952
>>> alist += [4]
>>> id(alist)
50683952
>>> alist = alist + [4]
>>> id(alist)
50533080
Voici la documentation pour id()
: https://docs.python.org/3/library/functions.html#id
Est-il possible d'obtenir référence à l'adresse mémoire programatically, déterminer si l'emplacement a une liste ou un dictionnaire, lire le contenu et mettre à jour le contenu en utilisant la référence?
NOTE:
J'ai trouvé 2 messages pertinents de stackoverflow mais je ne suis pas sûr qu'ils répondent à ma question.
Ce que 'id' renvoie ne sont pas des emplacements de mémoire. Vous ne pouvez pas accéder à ceux avec python. En fait, vous ne pouvez y accéder dans aucune langue (même C, tout ce que vous obtenez sont les adresses logiques). –
ah ok, mais la documentation dit que id() est l'adresse de l'objet en mémoire. – JRG
Un abus de langage, certainement. C'est seulement un entier donnant une indication de la référence de l'objet, qui ressemble vaguement à une référence de mémoire. –