Bonne Utilisation De Variables Globales En Python 3
Qui est de l'utilisation correcte des variables globales dans Python 3?:
1) Indiquant global VAR_NAME
une fois dans la base de script (pas à l'intérieur d'une fonction) et puis tout simplement se référant à la variable, comme VAR_NAME
partout ailleurs
2), en Indiquant global VAR_NAME
une fois à l'intérieur de chaque fonction qui utilise la variable globale et puis tout simplement se référant à la variable, comme VAR_NAME
pour le reste de la fonction et dans le cœur du script lui-même
- À la deuxième Rik point, une question plus importante est ce qui vous conduit à penser que vous en avez besoin? L'utilisation de la
global
mot-clé chez les débutants est presque toujours un signe de tenter de programme à l'aide d'une autre langue de l'état d'esprit, et si vous êtes en train de lire un tutoriel qui l'encourage, vous devez en obtenir un meilleur. - Seulement #2 est pertinente. Vous ne pouvez pas déclarer à l'échelle mondiale mondiale. Vous doit changer le nom du sens dans chaque espace de noms local qui va se référer à la mondiale. Lorsque vous avez essayé approche #1 n'a même travail? Si oui, pouvez-vous le prouver par un exemple? Et. Éviter les variables globales.
- En plus de ce que d'autres ont dit non à l'échelle mondiale, vous pouvez facilement trouver ce qui fonctionne en essayant à la fois.
Vous devez vous connecter pour publier un commentaire.
Dans le premier cas, le mot clé global est inutile, si ce n'est pas correct. La définition d'une variable sur le niveau de module en fait une variable globale, vous n'avez pas besoin de mot clé global.
Le deuxième exemple est l'utilisation correcte.
Cependant, l'utilisation la plus courante pour les variables globales sont sans utiliser le mot clé global n'importe où. Le mot clé global est nécessaire uniquement si vous souhaitez réaffecter les variables globales dans la fonction/méthode.
Vous devez utiliser le mot clé global en fonction de si vous utilisez la variable globale dans une manière qui serait contraire être interprété comme une affectation à une variable locale. Sans le mot clé global, vous allez créer une variable locale qui cache le mondial dans le domaine de la fonction.
Voici quelques exemples:
"d'une manière qui serait contraire être interprété comme une affectation à une variable locale" --- oui, mais ici, c'est un subtil détail:
------------------- erreur: la variable locale 'c' référencé avant affectation
------------------- erreur: la variable locale 'c' référencé avant affectation
------------------- imprime [3]
------------------- imprime [3]
La principale différence entre les deux premiers cas et que les deux cas ci-dessus, la réponse devrait être le fait que la liste est mutable. Pour les cas comme un = 1 un pointeur pointe vers l'emplacement où 1 est et quand vous dites que a = 2 le pointeur se déplace.
Pour le cas des objets mutables un emplacement de mémoire est allouée et lorsque les méthodes comme append sont utilisées changements se produisent à l'emplacement de la mémoire elle-même et donc la valeur de la mutable références est changé à l'échelle mondiale.
Maintenant la grande question est de savoir comment la fonction connaît la variable que nous sommes en train de modifier est global ou local, car il paraît qu'on peut modifier la variable globale si son mutable et nous ne pouvons pas si sa non mutables (La fonction ne reconnaît pas non plus ce que la variable globale)