Liste et paramètre de fonction en python

05/03/2004

Python et les paramètres de fonctions où comment faire la correspondance entre un type complexe et une liste de paramètres.

>>> def fct(p1,p2,p3,p4):
        print "p1=%s\tp2=%s\tp3=%s\tp4=%s"%(p1,p2,p3,p4)
>>> li=["pauillac", 1973, 1.0, 'a']
>>> fct(*li)
p1=pauillac     p2=1973 p3=1.0  p4=a
>>> apply(fct, li)
p1=pauillac     p2=1973 p3=1.0  p4=a
>>> di={"a":1, "b":2, "c":3, "d":4}
>>> fct(*di)
p1=a    p2=c    p3=b    p4=d
>>> apply(fct, di.keys())
p1=a    p2=c    p3=b    p4=d
>>> apply(fct, di.values())
p1=1    p2=3    p3=2    p4=4
>>> tup=(23,34,56,99)
>>> fct(*tup)
p1=23   p2=34   p3=56   p4=99

attention, il y a quand même un contrôle sur la taille entre ce qui est demandé et ce qui est fourni…

>>> fct(*li)

Traceback (most recent call last):
  File "<pyshell #43>", line 1, in -toplevel-
    fct(*li)
TypeError: fct() takes exactly 4 arguments (5 given)