J'utilise Eclipse SDK v3.6 avec le plugin PyDev v2.6 sur deux PC, avec Linux et Windows.
Je voudrais passer un Tuple comme argument, comme (juste un exemple):
foo = lambda (x,y): (y,x)
print (foo((1,2)))
Cela fonctionne sous Linux et donne le résultat:
(2,1)
Sous Windows, une erreur se produit:
foo = lambda (x,y): (y,x)
^
SyntaxError: invalid syntax
Comment résoudre le problème?
Vous exécutez probablement Python 3.x sous Windows et Python 2.x sous Linux. La possibilité de décompresser les paramètres de tuple a été supprimée dans Python 3: Voir PEP 311 .
Vous pouvez décompresser manuellement le tuple à la place, ce qui fonctionnerait sur les deux Python 2.x et 3.x:
foo = lambda xy: (xy[1],xy[0])
Ou:
def foo(xy):
x,y = xy
return (y,x)