Pourquoi ne déballage d'un n-uplet de provoquer une erreur de syntaxe?
En Python, j'ai écrit ceci:
bvar=mht.get_value()
temp=self.treemodel.insert(iter,0,(mht,False,*bvar))
Je suis en train de développer bvar
à l'appel de la fonction en tant qu'arguments.
Mais ensuite, il retourne:
File "./unobsoluttreemodel.py", line 65
temp=self.treemodel.insert(iter,0,(mht,False,*bvar))
^
SyntaxError: invalid syntax
Ce qui vient de se passer? Il devrait être correcte?
Vous devez vous connecter pour publier un commentaire.
Si vous voulez passer le dernier argument comme un n-uplet de
(mnt, False, bvar[0], bvar[1], ...)
vous pouvez utiliserLa prolongation de la syntaxe d'appel
*b
ne peut être utilisé dans l'appel de fonctions, les arguments de la fonction, et tuple déballage sur Python 3.x.Tuple littérale n'est pas dans un de ces cas, il provoque une erreur de syntaxe.
*
opérateur de résolution n'est pas autorisé pour la création de tuples.Mise à jour: ce problème a été corrigé dans Python 3.5.0, voir PEP-0448:
Non, il n'est pas droit. Les paramètres d'extension ne fonctionne que dans les arguments de la fonction, pas à l'intérieur des n-uplets.
Vous semblent avoir un niveau supplémentaire de parenthèses là. Essayez:
Votre extra parenthèses sont en train de créer un tuple à l'aide de la
*
de la syntaxe, ce qui est une erreur de syntaxe.