Main

Référence : Fonctions Pyduino

global ()


Description

Qualificateur qui permet d'indiquer qu'une variable ou un objet est global, c'est à dire de portée extérieure à la fonction où il est utilisé.

Syntaxe

global nom

A retenir : En Python, toute variable ou objet initialisé dans une fonction sera considéré comme local à cette fonction par défaut

Paramètres

  • nom: nom de la variable ou de l'objet qui pourra être de n'importe quel type

Valeur renvoyée

  • aucune

Explications

Typiquement dans le langage C ou Arduino, il suffit de déclarer une variable en dehors de toute fonction pour qu'elle soit globale : il est dès lors possible de l'appeler dans une fonction.

En Python, les choses fonctionnent de la même façon, tant que l'on ne réaffecte pas la valeur de la variable ou de l'objet dans la fonction qui l'utilise. Exemple :

#!/usr/bin/python
# -*- coding: utf-8 -*-

from pyduino import * # importe les fonctions Arduino pour Python

# entete declarative
LED=4 # variable globale

#--- setup ---
def setup():
        Serial.println(LED) # affiche variable globale car pas modifiée

# -- fin setup --

# -- loop --
def loop():
        return

# -- fin loop --

#--- obligatoire pour lancement du code --
if __name__=="__main__": # pour rendre le code executable
        setup() # appelle la fonction main
        while not noLoop: loop() # appelle fonction loop sans fin

 

Par contre, si l'on réaffecte la valeur d'une variable dans une fonction, celle-ci va être considérée comme locale par Python. Pour que Python comprenne qu'il s'agit d'une variable globale, il faut le lui dire explicitement (ce qui protège d'ailleurs contre des usages involontaires de variables extérieures à la fonction...) : on ajoutera simplement la ligne global nom dans la fonction, ce qui donne :

#!/usr/bin/python
# -*- coding: utf-8 -*-

from pyduino import * # importe les fonctions Arduino pour Python

# entete declarative
LED=4 # variable globale

#--- setup ---
def setup():

        global LED # indique que l'identifiant LED représente une variable globale

        Serial.println(LED) # affiche variable globale car pas modifiée

        LED=2 # change la valeur de la variable globale

# -- fin setup --

# -- loop --
def loop():

        Serial.println(LED) # affiche variable globale car pas modifiée
        # si on modifie la valeur de la variable, il faut ajouter également la ligne global LED

# -- fin loop --

#--- obligatoire pour lancement du code --
if __name__=="__main__": # pour rendre le code executable
        setup() # appelle la fonction main
        while not noLoop: loop() # appelle fonction loop sans fin

 

Remarque

  • En Python, la portée d'une variable globale est elle-même limitée au module où elle est utilisée !

Lien utile

http://docs.python.org/release/2.4/ref/global.html

Commentaires utilisateurs

Aucun commentaire

Voir également


Page d'accueil de la référence Pyduino en français

Corrections, suggestions et nouvelle documentation peuvent être postées à l'adresse suivante : support_at_mon-club-elec_point_fr

Cette page a été réalisée par Xavier HINAULT (2013) (www.mon-club-elec.fr) et est sous licence Creative Commons Attribution-ShareAlike 3.0.