Bjr,
Le titre n'est pas très explicite, désolé mais je ne suis jamais bien inspiré pour trouver des titres claires ...

J'aimerais savoir ce qui est plus rapide,
Soit une suite de if, elif, else, ou un appel à de fonctions ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
if 'TREE@TRUC' in sortie:
    commande
elif 'TEXT@MACHIN' in sortie:
    commande
elif .....
....
....
Ou :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
def TREE(arg):
    commande
def TEXT(arg):
    commande
 
fonction, arg = sortie.split('@')
eval( "%s('%s')" % (fonction, arg) )
Dans le même genre, j'ai une suite de if in or
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
if ( 'pattern1' in ligne or 'pattern2' in ligne or 'pattern3' in ligne):
    commande obligatoire
    if  'pattern1' in ligne:
        commande
    elif 'pattern2' in ligne:
        commande
Pour remplacer les if in or, j'ai utilisé une liste compréhension, mais c'est plus long que les if or. (normal, il matche chaque pattern pour le mettre dans la liste, avec les or, dès qu'il trouve, il arrête)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
defaut=[ 'pattern1', 'pattern2', 'pattern3']
liste=[ i for i in defaut if i in ligne ]
if liste:
    commande obligatoire
    if  'pattern1' in ligne:
        commande
    elif 'pattern2' in ligne:
        commande
Je ne vois pas non plus comment me passer des if elif qui suivent, à moins de passer par une ER pour traiter la ligne et en récupérer ce qu'il faut pour lancer une fonction via eval, mais je pense que ca sera plus gourmand que des elif (enfin j'en sais rien, c'est bien pour ça que je pose cette question )

Avec ma maigre expérience, j'ai remarqué qu'il été souvent plus rapide d'utiliser de if elif que des trucs plus complexes, certe le code est moins jolie, mais bon, c'est pas le but la beauté

Merci d'avance à ceux qui vont éclairer ma lanterne.