L'histoire de la manipulation des variables globales Python

Variables globales et locales

J'ai raté plusieurs fois lors de l'implémentation avec python, alors faites-en une note pour moi-même. Il est compréhensible que ce code renvoie le résultat suivant.

x = 1

def func1():
    print(x)

def func2():
    x = "hoge"
    print(x)

func1()
func2()

>>> 1
>>> hoge

En python, lors du référencement d'une variable, il fait référence à la portée globale si elle n'est pas déclarée dans la portée locale.

De plus, si la variable n'est pas déclarée avant de réécrire la variable dans la portée locale, une erreur est renvoyée.

def func3():
    y += 1
    y = 5
    print(y)

func3()

>>> Traceback (most recent call last):
>>>   File "/test.py", line 8, in <test>
>>>     func3()
>>>   File "/test.py", line 4, in func3
>>>     y += 1
>>> UnboundLocalError: local variable 'y' referenced before assignment

Je l'ai compris jusqu'à présent, mais lorsque des variables globales ont été impliquées, j'ai été immédiatement confus. En d'autres termes, lors de la manipulation d'une variable déclarée en tant que variable globale, elle doit être explicitement déclarée et une erreur est normalement renvoyée.

x = 1

def func4():
    x += 1 #À ce stade, x ne peut pas encore être référencé
    x = 5 #La variable x est ajoutée à la portée locale à ce stade
    print(x)

func4()

>>> Traceback (most recent call last):
>>>   File "/test.py", line 8, in <test>
>>>     func4()
>>>   File "/test.py", line 4, in func4
>>>     x += 1 
>>> UnboundLocalError: local variable 'x' referenced before assignment

Alors que dois-je faire?

La solution est simple, et lorsque vous utilisez des variables globales, précisons qu'il s'agit de variables globales.

x = 1

def func5():
    global x #Être explicitement une variable globale
    x += 1 
    print(x)

def func6():
    x = 10 #Être explicitement une variable locale
    x += 1
    print(x)

func5()
func6()

>>> 2
>>> 11

Recommended Posts

L'histoire de la manipulation des variables globales Python
L'histoire de Python et l'histoire de NaN
[python] Vérifier la consommation de mémoire des variables
L'histoire du traitement A du blackjack (python)
le zen de Python
L'histoire de sys.path.append ()
L'histoire selon laquelle le coût d'apprentissage de Python est faible
Traitement d'image? L'histoire du démarrage de Python pour
L'histoire de la lecture des données HSPICE en Python
L'histoire de la construction de Zabbix 4.4
Vers la retraite de Python2
L'histoire de Python sans opérateurs d'incrémentation et de décrémentation.
L'histoire de FileNotFound en Python open () mode = 'w'
Déclaration des variables globales du langage C
À propos des fonctionnalités de Python
L'histoire de la conversion automatique du langage de TypeScript / JavaScript / Python
Le pouvoir des pandas: Python
L'histoire de la mise en œuvre du sujet Facebook Messenger Bot avec python
Sakura L'histoire du fonctionnement de la bouteille Python sur Internet
Prise en compte des décorateurs Python du type qui passe des variables
L'histoire du rubyiste aux prises avec Python :: Dict data with pycall
[Python] Tensorflow 2.0 ne supportait pas Python 3.8, donc l'histoire de la rétrogradation de Python
Initialisation de variables globales à l'aide de décorateurs Python
[Python] La pierre d'achoppement de l'importation
First Python 3 ~ Le début de la répétition ~
Existence du point de vue de Python
pyenv-changer la version python de virtualenv
Utilisation de variables globales dans les fonctions python
L'histoire du "trou" dans le fichier
[Python] Comprendre le potentiel_field_planning de Python Robotics
Revue des bases de Python (FizzBuzz)
L'histoire du remontage du serveur d'application
À propos de la liste de base des bases de Python
Histoire d'approximation de puissance par Python
L'histoire de l'exportation d'un programme
Apprenez les bases de Python ① Débutants élémentaires
L'histoire selon laquelle la version de python 3.7.7 n'était pas adaptée à Heroku
Le 14 mars est le jour du rapport de circonférence. L'histoire du calcul du ratio de circonférence avec python
[Python] Variables
L'histoire de la création d'un pilote standard pour db avec python.
L'histoire de la création d'un module qui ignore le courrier avec python
[Python3] Définir dynamiquement des variables globales dans une fonction
Changer la longueur des chaînes csv Python
L'histoire d'essayer de reconnecter le client
Vérifiez le comportement du destroyer en Python
L'histoire d'une erreur dans PyOCR
[Python3] Comprendre les bases de Beautiful Soup
Apprenez les bases en touchant les variables python
Passez le chemin du module python importé
L'histoire de la mise en place de MeCab dans Ubuntu 16.04
Notes d'apprentissage depuis le début de Python 1
[Python3] Réécrire l'objet code de la fonction
Je ne connaissais pas les bases de Python
L'histoire de la fabrication d'un moule immuable
[Python] Essayez pydash de la version Python de lodash