Bonjour,
Je souhaite envoyer une liste comme argument à une fonction (jusque là tout va bien) mais le problème est que je dois appeler la fonction par exec(....).
Dans ce cas evidement, il y a confusion des genres entre la liste et exec qui ne souhaite que des str pour construire mon appel.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
 
def param1_decode(mylistoflist=[]):
    mylistoflist[0][1] = mylistoflist[0][1].upper
    return mylistoflist[0][1]
 
mylistoflist = [[32, 'service_type', '00', 'Default'], [34, 'source_addr_ton', '0x00', 'Unknown']]
myparamlist = [("param1",6,"coctetstring"),("param2",1,"integer"),("param3",1,"integer")]
 
for x in range(len(myparamlist)):
    myparam_decode = ""
    myparam_name = myparamlist[x][0]
    myparam_length = myparamlist[x][1]
    myparam_type = myparamlist[x][2]
    exec("myparam_decode = " + myparam_name + "_decode('" + mylistoflist + "')")
    print myparam_decode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
    exec("myparam_decode = " + myparam_name + "_decode('" + mylistoflist + "')")
TypeError: cannot concatenate 'str' and 'list' objects
J'ai essayé avec l'utilisation de la liste en variable globale, celà fonctionne sauf dans un code mod_python (avec formulaires, ...) où les variables globales restent inutilisables.

Merci par avance pour votre aide.