Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2920 connectés 

  FORUM HardWare.fr
  Programmation
  Python

  Débutant python => Affectation avec virgule [RESOLU]

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Débutant python => Affectation avec virgule [RESOLU]

n°1600593
Sve@r
Posté le 17-08-2007 à 22:49:23  profilanswer
 

Bonjour à tous,
 
Je débute en Python et j'essaye de travailler avec matplotlib qui est une super librairie pour les graphes. En regardant un exemple matplotlib, j'y ai vu les lignes suivantes

Code :
  1. l0, = ax.plot(t, s0, visible=False, lw=2)
  2. l1, = ax.plot(t, s1, lw=2)
  3. l2, = ax.plot(t, s2, lw=2)


 
Ce que je ne comprends pas, ce sont les virgules avant le "=" ou plutôt je ne le comprends pas ici. J'ai bien vu que dans Python on pouvait affecter plusieurs variables simultanément comme ceci

Code :
  1. a, b, c = 1, 2, 3


Mais là, il n'y a qu'une seule variable par instruction et j'arrive pas à recaler cette écriture avec mon exemple. En tout cas j'ai essayé de l'enlever mais le programme ne fonctionne plus preuve que c'est important.
 
Si vous voulez voir le code en entier, il est ici: http://matplotlib.sourceforge.net/ [...] buttons.py
 
Merci à tous de vos réponses...


Message édité par Sve@r le 20-08-2007 à 10:38:01

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
mood
Publicité
Posté le 17-08-2007 à 22:49:23  profilanswer
 

n°1600596
verdoux
And I'm still waiting
Posté le 17-08-2007 à 22:57:06  profilanswer
 

Ca doit être pour un tuple:
(x,y) = (1,2)
ou
x,y = (1,2)
 
Si le tuple n'a qu'une composante:
(x,) = (1,)
ou
x, = (1,)

n°1600598
Sve@r
Posté le 17-08-2007 à 23:01:19  profilanswer
 

verdoux a écrit :

Ca doit être pour un tuple:
(x,y) = (1,2)
ou
x,y = (1,2)
 
Si le tuple n'a qu'une composante:
x, = (1,)


ou "x, = 1," sans parenthèse. Je comprends. D'ailleurs en rajoutant des parenthèses autour de chaque "l0," ça marche pareil. Mais pourquoi créer un tuple avec un seul élément ?

Message cité 1 fois
Message édité par Sve@r le 17-08-2007 à 23:02:20

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1600600
verdoux
And I'm still waiting
Posté le 17-08-2007 à 23:08:02  profilanswer
 

En survolant la doc j'ai l'impression que cela retourne un n-tuple si il y a n courbes à tracer.

n°1600668
masklinn
í dag viðrar vel til loftárása
Posté le 18-08-2007 à 12:28:39  profilanswer
 

Sve@r a écrit :


ou "x, = 1," sans parenthèse. Je comprends. D'ailleurs en rajoutant des parenthèses autour de chaque "l0," ça marche pareil. Mais pourquoi créer un tuple avec un seul élément ?


Comme le dit verdoux, c'est probablement parce qu'il retourne un n-tuple en fonction d'un certain paramètre (nombre de courbes à tracer, donc, d'après verdoux).

 

Ici ce paramètre est à 1, donc il retourne un 1-tuple, donc 1,

Message cité 1 fois
Message édité par masklinn le 18-08-2007 à 12:30:32

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1600974
Sve@r
Posté le 20-08-2007 à 10:37:04  profilanswer
 

masklinn a écrit :


Comme le dit verdoux, c'est probablement parce qu'il retourne un n-tuple en fonction d'un certain paramètre (nombre de courbes à tracer, donc, d'après verdoux).
 
Ici ce paramètre est à 1, donc il retourne un 1-tuple, donc 1,


 
Vi, j'ai compris en faisant un essai rapide

Code :
  1. def fct(n):
  2.    return (n, n + 1)
  3.  
  4. a=fct(5)
  5. (b, c)=fct(7)
  6. print a => (5, 6)
  7. print b => 7
  8. print c => 8


 
J'imagine que si j'avais écrit "d,=fct(9)" j'aurais eu 9 dans "d" et non (9, 10) mais pour moi qui vient du C, c'est déroutant cette possibilité de gérer et renvoyer des objets aussi facilement que de simples nombres... mais je vais m'y habituer

Message cité 1 fois
Message édité par Sve@r le 20-08-2007 à 10:37:31

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1600984
masklinn
í dag viðrar vel til loftárása
Posté le 20-08-2007 à 10:54:43  profilanswer
 

Sve@r a écrit :


 
Vi, j'ai compris en faisant un essai rapide

Code :
  1. def fct(n):
  2.    return (n, n + 1)
  3.  
  4. a=fct(5)
  5. (b, c)=fct(7)
  6. print a => (5, 6)
  7. print b => 7
  8. print c => 8


 
J'imagine que si j'avais écrit "d,=fct(9)" j'aurais eu 9 dans "d" et non (9, 10)


Non, t'aurais eu une erreur:
 

  • En lvalue tu aurais (d,), donc un 1-tuple
  • En rvalue, tu aurais (9, 10), donc un 2-tuple (ou pair)


Python aurait tenté d'unpacker un 2-tuple dans un 1-tuple, et n'aurait pas réussi (normal) et aurait gueulé que ValueError: too many values to unpack
 
On ne peut unpacker un n-tuple que dans un autre n-tuple avec n égaux ;)


---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Python

  Débutant python => Affectation avec virgule [RESOLU]

 

Sujets relatifs
[résolu]Interception de signaux (barre espace ?)[Résolu] Recherche de données dans différentes feuilles Excel
[Resolu] Interdire saisie de caractère[Résolu] Expirer la cache au niveau de la page
Petite question de DebutantFatal error: Cannot redeclare getsqlvaluestring() RESOLU
[resolu] css : texte à l'interieur d'un <p>[RESOLU] Lancer pop up depuis flash (compatible IE)
probleme dans un projet (niveau debutant)pb affectation dynamique d'évenements
Plus de sujets relatifs à : Débutant python => Affectation avec virgule [RESOLU]


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR