Variables globales [Python] [Résolu] - Python - Programmation
Marsh Posté le 10-01-2010 à 22:18:05
http://pragprog.com/titles/gwpy/practical-programming
Marsh Posté le 10-01-2010 à 22:34:33
J'ai pas spécialement envie de m'acheter un bouquin, surtout en anglais.
Marsh Posté le 10-01-2010 à 23:38:39
Tu veux apprendre à programmer ou pas ?
Et si t'aimes pas l'anglais, arrêtes tout de suite, tu arriveras à pas grand chose...
Marsh Posté le 22-01-2010 à 21:05:58
Bonsoir
J'arrive un peu en retard mais c'est parce que je viens plus trop souvent dans cette partie du forum.
Bon, tout d'abord parlons de ton programme. Tu remarqueras que la ligne 13, celle qui pose problème, est totalement hors contexte. Pourquoi remplir des valeurs qui seront écrasées par celles de la ligne 22 ?
Cette simple réflexion permet ensuite d'en déduire que la ligne 13 doit probablement appartenir à la fonction "drawline()" mais qu'il manque la tabulation qui l'indique. Sans cette dernière, l'interpréteur cherche à exécuter cette ligne avant l'appel à la fonction. Et alors la variable y2 n'est pas encore définie
Il te suffit juste de décaler cette ligne pour la mettre au même niveau que celle qui la précède. Evidemment si ce programme récupéré sur le net avait été un poil plus propre, la fin de fonction y serait indiquée et t'aurais trouvé l'erreur plus facilement
Voici un code qui fonctionne
Code :
|
Maintenant les globales: ben une variable globale est, comme son nom l'indique, une variable qui est connue dans la globalité du programme. Maintenant, beaucoup de programmeurs préfèrent éviter de les utiliser car quand une variable globale part en torche, difficile de trouver à quel endroit elle s'est mise à déconner. Surtout que Python est assez riche de possibilités pour te permettre de ne pas en avoir besoin.
Marsh Posté le 24-01-2010 à 21:06:11
Sve@r > encore une erreur d'indentation. Cela dit, je commence à moins en faire. J'ai bien avancé dans l'apprentissage de ce langage et je commence à m'habituer à son extrême rigueur.
Je retiens l'idée d'indiquer la fin de la fonction
Quant aux variables globales, j'essaierai de les utiliser le moins possible alors
Merci d'avoir pris le temps de me répondre
Marsh Posté le 10-01-2010 à 19:05:45
Bonsoir,
Me revoilà avec une nouvelle question. Comme je débute en Python, je risque d'en avoir souvent (patapay).
Lorsque je lance l'exécution du programme suivant, Python m'indique que y2 n'est pas définie. J'ai un peu de mal à faire la distinction entre variables locales et variables globales. Même chose avec les autres langages.
Quelqu'un pourrait-il m'aider à faire tourner mon* programme et m'expliquer simplement en quoi ces deux types de variables sont différents.
Je sais déjà que les variables locales sont définies à l'intérieur d'une fonction et les variables globales à l'extérieur, mais à part ça...
Le script :
from Tkinter import *
from random import randrange
def drawline():
"Tracé d'une ligne dans le canevas can1"
global x1, y1, x2, y2, coul
can1.create_line(x1, y1, x2, y2, width=2, fill=coul)
y2, y1 = y2+10, y1-10
def changecolor():
"Changement aléatoire de la couleur du tracé"
global coul
pal=['purple', 'cyan', 'maroon', 'green', 'red', 'blue', 'orange', 'yellow', 'pink', 'silver']
c = randrange(10)
coul = pal[c]
x1, y1, x2, y2 = 10, 190, 190, 10
coul = 'dark green'
fen1 = Tk()
can1 = Canvas(fen1, bg='dark grey', height=200, width=200)
can1.pack(side=LEFT)
bou1 = Button(fen1, text='Quitter', command=fen1.quit)
bou1.pack(side=BOTTOM)
bou2 = Button(fen1, text='Tracer une ligne', command=drawline)
bou2.pack()
bou3 = Button(fen1, text='Autre couleur', command=changecolor)
bou3.pack()
fen1.mainloop()
fen1.destroy()
* Programme récupéré en fait sur le Net
Merci d'avance.
Message édité par Profil supprimé le 26-01-2010 à 19:20:25