Comportement bizarre de python avec les variables

salut
Je veux partager avec vous cette expérience qui montre le comportement, à mon avis bizzare, de python
j’ai un classe “Maclasse” qui possede une méthode “mettreAjourMatriceRotation” :

class MaClasse: def mettreAjourMatriceRotation (self): q[0]=self.quaternion[0]
L’exécution donne le message d’erreur suivant :
Exception in thread Thread-2:

Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner self.run() File "principale.py", line 59, in run self.main() File "principale.py", line 75, in main self.mettreAjourMatriceRotation() File "principale.py", line 175, in mettreAjourMatriceRotation q[0]=self.quaternion[0] NameError: global name 'q' is not defined
Le message est correcte, “q” n’a pas été définie aupravant. Ce qu’il me dérange c’est le code suivant :

class MaClasse: def mettreAjourMatriceRotation (self): t=0 if t == 0 : return q[0]=self.quaternion[0]
malgré que je n’ai pas déclaré “q”, le code a fonctionné .
Que-est-ce vous en pensez ?

Il a fonctionné ou il a été ignoré ?
Parce qu’à priori vu que tu initilaise t à 0 et que si t vaut 0 tu fais return, la prochaine ligne est ignorée. Avec Eclipse tu aurais un message “never used”

[quote=“debianhadic”]Il a fonctionné ou il a été ignoré ?
Parce qu’à priori vu que tu initilaise t à 0 et que si t vaut 0 tu fais return, la prochaine ligne est ignorée. Avec Eclipse tu aurais un message “never used”[/quote]

tu vois à quel point on peut devenir bête lors qu’on est saturé …
t’as raison il l’a ignoré
merci

J’ai été bloqué toute la journée à cause d’une parenthèse fermante mal placée dans un système d’équations :013
je déteste ce genre de faux problèmes, ça me donne envie de pleurer :088

La syntax error est tout sauf un faux problème, du point de vue d’un ordinateur :slightly_smiling:
C’est l’équivalent pour nous d’une phra mal constrte tr_s pnib à lire.

Jet pa con pris taf rase !