Boutique Cinema 4D
Affichage des résultats 1 à 3 sur 3

Discussion: Python : Pointeurs de fonctions avec arguments

  1. #1
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483

    Python : Pointeurs de fonctions avec arguments

    Salut,

    J'ai un code qui ressemble à ça :

    Code PHP:
    if == :
        
    truc(123)
    elif a == :
        
    bidule(41256)
    elif a == :
        
    machin(589)

    # et ainsi de suite avec une cinquantaine d'elif. 

    Le soucis, c'est que c'est assez lent à exécuter à la longue car il vérifie parfois 50 conditions pour rien.

    Savez-vous s'il est possible de ranger ces fonctions dans un tableau, mais avec les arguments prédéfinis, afin de gagner du temps d'exécution ?

    De telle sorte que tab[a] exécute truc(1, 2, 3), tab[b] bidule(4, 1, 2, 5, 6), etc.

  2. #2
    Pilier Avatar de xs_yann
    Date d'inscription
    février 2005
    C4D version
    R19 Studio
    OS
    Mac OS X 10.13
    Messages
    1 990
    Salut César,

    Oui tu peux, je ferais comme ça :

    Code PHP:
    import random

    def truc
    (foobartoto):
        print 
    "truc"foobartoto

    def bidule
    (abcde):
        print 
    "bidule"abcde

    def machin
    (arg1arg2arg3):
        print 
    "machin"arg1arg2arg3

    def main
    ():
        
    func_table = {
            
    1: (truc, (123)),
            
    2: (bidule, (41256)),
            
    3: (machin, (589))
        }
        
    random.randint(13)
        print 
    "1 = truc, 2 = bidule, 3 = machin"
        
    print "a = "a
        func
    args func_table[a]
        
    func(*args)

    if 
    __name__ == '__main__':
        
    main() 
    J'ai utilisé un dictionnaire pour montrer que tu mets ce que tu veux comme clés, mais si tu peux utiliser un tableau si tes clés sont 0, 1, 2, ...

    Fais une recherche sur "args, kwargs", c'est un mécanisme qui permet de faire passer des tuples ou dictionnaires comme argument de fonctions.

  3. #3
    Gourou Avatar de César Vonc
    Date d'inscription
    avril 2006
    C4D version
    Autre
    OS
    Windows 10
    Messages
    2 483
    Ahh d'accord, c'est tout bête, merci Yann !

Discussions similaires

  1. Les fonctions mathematique en python ?
    Par paspas dans le forum Programmation
    Réponses: 7
    Dernier message: 15/11/2013, 12h29
  2. [Question] Désactiver certaines fonctions de la R14
    Par chefild dans le forum Général Cinema 4D
    Réponses: 3
    Dernier message: 19/04/2013, 16h30
  3. Python/C++ : images avec profondeur supérieure à 8bits
    Par oli_d dans le forum Programmation
    Réponses: 11
    Dernier message: 23/03/2011, 11h19
  4. fonctions movie
    Par valkaari dans le forum ZBrush
    Réponses: 6
    Dernier message: 28/04/2010, 03h07
  5. Les fonctions transformer rotation homotétie et attraper se bloquent
    Par Anouchkange dans le forum Nouveaux membres
    Réponses: 7
    Dernier message: 24/05/2007, 14h35

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  
Mediaworks - Logiciels 3D | Design Internet - Creation site internet