Il semble que vous soyez un peu confus sur la façon dont les arguments/paramètres sont transmis.
Jetez un coup d'œil à cet exemple.
def my_func(copy_var):
#copy_var=1
print(copy_var)
print(hex(id(copy_var)))
var=1000
print(var)
print(hex(id(var)))
print("----------------------")
my_func(var)
sortie:
1000
0x7efd723d9b70
----------------------
1000
0x7efd723d9b70
Remarque: hex (id (variable)) retourne simplement l'adresse de la mémoire de la valeur stockée dans une variable
Remarquez comment la les adresses sont les mêmes. Désigne à la fois la variable locale (qui est locale uniquement pour la fonction) et la variable globale pointant vers la même adresse.
Cependant, la portée de copy_var est seulement dans cette fonction. Lorsque vous essayez d'y accéder à l'extérieur. L'erreur est levée.
Jetez un coup d'œil à celui-ci.
def my_func(copy_var):
print(copy_var)
var=1000
print(var)
print("------------------------")
my_func(var)
print(copy_var)
sortie:
1000
------------------------
1000
Traceback (most recent call last):
File "/home/mr/argfunc.py", line 7, in <module>
print(copy_var)
NameError: name 'copy_var' is not defined
maintenant aussi simple que je peux mettre,
def my_func(copy_var):
print(copy_var)
print(var)
var=1000
print(var)
my_func(var)
Les deux copy_var
et var
ont la même valeur indiquant même adresse. Mais la face est dans la fonction tandis que l'autre est globale.
Notez comment les deux (copy_var et var) impriment la même valeur 1000
. C'est exactement ce qui se passe dans votre code confus.
Pour en revenir à votre, puisque dans cette ligne
add_to_inventory(stuff, dragon_loot)
dragon_loot
est donnée à fonctionner comme added_items
donc à la fois le point même adresse ayant les mêmes valeurs. Mais la seule différence est que leurs champs d'application sont différents.
dragon_loot
-?>added_items
J'ai lu et lu, mais je ne peux vraiment trouver votre question ici :(, pourriez-vous être plus clair s'il vous plaît ce qui est bien votre question quel est le problème –
demandons pourquoi vous? inventory [dragon_loot [n]] == inventory [added_items [n]]? – JohnDoe
Oui, ça l'est, je ne sais pas comment ils sont équivalents. – Tuto