Mais ca ne marche pas non plus : erreur de syntaxe
Ce qui marche :
print frm % tuple ([date] + tot)
Par contre, si je fais :
d = [2010,4,30]
datetime.date (d) => erreur disant que date attend un tuple d'arguments
datetime.date (*d) => fonctionne
Si j'ai bien compris, *d passe les valeurs du tableau comme une "suite"
(je sais pas le terme exact) de parametres a la fonction date
Je voudrais savoir pourquoi *tot est rejete par print(), mais accepte
par date()
Cela vient-il de la signature de la fonction print() ?
Où trouver la doc de cet opérateur * ?
Je n'ai jamais rien vu là dessus, hormis dans des exemples de code.
Mais ca ne marche pas non plus : erreur de syntaxe Ce qui marche :
print frm % tuple ([date] + tot)
Par contre, si je fais : d = [2010,4,30]
datetime.date (d) => erreur disant que date attend un tuple d'arguments datetime.date (*d) => fonctionne
Si j'ai bien compris, *d passe les valeurs du tableau comme une "suite" (je sais pas le terme exact) de parametres a la fonction date
La solution est là : il y a un appel de fonction. C'est pour l'appel que * permet de transformer une séquence en une liste de paramètres.
OK Apparemment print() est une fonction "builtin" qui doit avoir une signature différente des fonctions classiques. Elle attend un scalaire ou tuple après le % et pas une suite d'arguments.
Je voudrais savoir pourquoi *tot est rejete par print(), mais accepte par date()
Il n'y a pas d'appel au moment où tu fais *tot, parce que cela apparaît dans une expression (date,*tot) ou ce n'est pas syntaxiquement correct. Si tu écris toi-même la fonction :
Mais ca ne marche pas non plus : erreur de syntaxe
Ce qui marche :
print frm % tuple ([date] + tot)
Par contre, si je fais :
d = [2010,4,30]
datetime.date (d) => erreur disant que date attend un tuple d'arguments
datetime.date (*d) => fonctionne
Si j'ai bien compris, *d passe les valeurs du tableau comme une
"suite" (je sais pas le terme exact) de parametres a la fonction date
La solution est là : il y a un appel de fonction. C'est pour l'appel que
* permet de transformer une séquence en une liste de paramètres.
OK
Apparemment print() est une fonction "builtin" qui doit avoir une
signature différente des fonctions classiques.
Elle attend un scalaire ou tuple après le % et pas une suite d'arguments.
Je voudrais savoir pourquoi *tot est rejete par print(), mais accepte
par date()
Il n'y a pas d'appel au moment où tu fais *tot, parce que cela apparaît
dans une expression (date,*tot) ou ce n'est pas syntaxiquement correct.
Si tu écris toi-même la fonction :
Mais ca ne marche pas non plus : erreur de syntaxe Ce qui marche :
print frm % tuple ([date] + tot)
Par contre, si je fais : d = [2010,4,30]
datetime.date (d) => erreur disant que date attend un tuple d'arguments datetime.date (*d) => fonctionne
Si j'ai bien compris, *d passe les valeurs du tableau comme une "suite" (je sais pas le terme exact) de parametres a la fonction date
La solution est là : il y a un appel de fonction. C'est pour l'appel que * permet de transformer une séquence en une liste de paramètres.
OK Apparemment print() est une fonction "builtin" qui doit avoir une signature différente des fonctions classiques. Elle attend un scalaire ou tuple après le % et pas une suite d'arguments.
Je voudrais savoir pourquoi *tot est rejete par print(), mais accepte par date()
Il n'y a pas d'appel au moment où tu fais *tot, parce que cela apparaît dans une expression (date,*tot) ou ce n'est pas syntaxiquement correct. Si tu écris toi-même la fonction :
Effectivement, ça fonctionne : (date,) cree un premier tuple, qui est concaténé au second et le tout est passé à "fmt %" puis au print
Joli ! Syntaxe un peu complexe tout de même.
???
Je suis d'accord. :-( Dis moi si tu trouve mieux. Pour l'instance c'est ma facon de coder, mais j'aurais rien contre quelquechose plus agreeable.
N
Euréka, il suffisait de :
print fmt %((date,) + (lambda *x:x)(*tot))
C'est beaucoup plus clair !!!
On doit pas avoir la même définition de "clair" alors. Perso, je tombe là-dessus dans un code, je perd au moins 10 minutes à me demander POURQUOI... avant éventuellement de le réécrire de la façon simple et évidente mentionnée ci-avant.
Effectivement, ça fonctionne :
(date,) cree un premier tuple, qui est concaténé au second
et le tout est passé à "fmt %" puis au print
Joli !
Syntaxe un peu complexe tout de même.
???
Je suis d'accord. :-(
Dis moi si tu trouve mieux.
Pour l'instance c'est ma facon de coder, mais j'aurais rien contre
quelquechose plus agreeable.
N
Euréka, il suffisait de :
print fmt %((date,) + (lambda *x:x)(*tot))
C'est beaucoup plus clair !!!
On doit pas avoir la même définition de "clair" alors. Perso, je tombe
là-dessus dans un code, je perd au moins 10 minutes à me demander
POURQUOI... avant éventuellement de le réécrire de la façon simple et
évidente mentionnée ci-avant.
Effectivement, ça fonctionne : (date,) cree un premier tuple, qui est concaténé au second et le tout est passé à "fmt %" puis au print
Joli ! Syntaxe un peu complexe tout de même.
???
Je suis d'accord. :-( Dis moi si tu trouve mieux. Pour l'instance c'est ma facon de coder, mais j'aurais rien contre quelquechose plus agreeable.
N
Euréka, il suffisait de :
print fmt %((date,) + (lambda *x:x)(*tot))
C'est beaucoup plus clair !!!
On doit pas avoir la même définition de "clair" alors. Perso, je tombe là-dessus dans un code, je perd au moins 10 minutes à me demander POURQUOI... avant éventuellement de le réécrire de la façon simple et évidente mentionnée ci-avant.
Effectivement, ça fonctionne : (date,) cree un premier tuple, qui est concaténé au second et le tout est passé à "fmt %" puis au print
Joli ! Syntaxe un peu complexe tout de même.
???
J'ai eu du mal à me rappeler du ((date,) qui crée un tuple singleton auquel on concatène un autre tuple.
Et puis, j'ai dit "un peu" complexe.
Je ne voulais vexer personne, surtout pas News123 qui a pris du temps pour donner sa solution du problème.
Je suis d'accord. :-( Dis moi si tu trouve mieux. Pour l'instance c'est ma facon de coder, mais j'aurais rien contre quelquechose plus agreeable.
N
Euréka, il suffisait de :
print fmt %((date,) + (lambda *x:x)(*tot))
C'est beaucoup plus clair !!!
Il m'arrive aussi de faire du second degré...
Désolé si ça a été mal interprété.
On doit pas avoir la même définition de "clair" alors. Perso, je tombe là-dessus dans un code, je perd au moins 10 minutes à me demander POURQUOI... avant éventuellement de le réécrire de la façon simple et évidente mentionnée ci-avant.
Effectivement, ça fonctionne :
(date,) cree un premier tuple, qui est concaténé au second
et le tout est passé à "fmt %" puis au print
Joli !
Syntaxe un peu complexe tout de même.
???
J'ai eu du mal à me rappeler du ((date,) qui crée un tuple singleton
auquel on concatène un autre tuple.
Et puis, j'ai dit "un peu" complexe.
Je ne voulais vexer personne, surtout pas News123 qui a pris du temps
pour donner sa solution du problème.
Je suis d'accord. :-(
Dis moi si tu trouve mieux.
Pour l'instance c'est ma facon de coder, mais j'aurais rien contre
quelquechose plus agreeable.
N
Euréka, il suffisait de :
print fmt %((date,) + (lambda *x:x)(*tot))
C'est beaucoup plus clair !!!
Il m'arrive aussi de faire du second degré...
Désolé si ça a été mal interprété.
On doit pas avoir la même définition de "clair" alors. Perso, je tombe
là-dessus dans un code, je perd au moins 10 minutes à me demander
POURQUOI... avant éventuellement de le réécrire de la façon simple et
évidente mentionnée ci-avant.
Effectivement, ça fonctionne : (date,) cree un premier tuple, qui est concaténé au second et le tout est passé à "fmt %" puis au print
Joli ! Syntaxe un peu complexe tout de même.
???
J'ai eu du mal à me rappeler du ((date,) qui crée un tuple singleton auquel on concatène un autre tuple.
Et puis, j'ai dit "un peu" complexe.
Je ne voulais vexer personne, surtout pas News123 qui a pris du temps pour donner sa solution du problème.
Je suis d'accord. :-( Dis moi si tu trouve mieux. Pour l'instance c'est ma facon de coder, mais j'aurais rien contre quelquechose plus agreeable.
N
Euréka, il suffisait de :
print fmt %((date,) + (lambda *x:x)(*tot))
C'est beaucoup plus clair !!!
Il m'arrive aussi de faire du second degré...
Désolé si ça a été mal interprété.
On doit pas avoir la même définition de "clair" alors. Perso, je tombe là-dessus dans un code, je perd au moins 10 minutes à me demander POURQUOI... avant éventuellement de le réécrire de la façon simple et évidente mentionnée ci-avant.