IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Liste de fonction avec paramètre inclus


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut Liste de fonction avec paramètre inclus
    Bonjour,

    J'ai placé plusieurs fonction dans une liste que j'exécute dans l'ordre par la suite. Cependant pour le moment il ne m'est pas possible de rajouter des paramètre en entrée des fonctions.

    j'ai pour l'instant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    def coucou():
       print "coucou"
     
    def hello():
       print "hello"
     
    #ma liste de fonctions:
    list_fonction = [coucou, hello]
     
    # j'exécute ailleurs
    if __name__ == '__main__':
       for fct in list_fonction:
             fct()
    Bien sur ce n'est qu'un exemple, je ne poste pas ici mon code entier.
    Je vous passerais l'intérêt d'une telle méthode, dans cette exemple il est clair que ce n'est pas très intéressant de faire ceci.

    J'aimerais donc pouvoir passer dans ma liste des paramètres, j'ai pensé a essayer:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    def afficher(x, y):
        print "je suis en {0}/{1}".format(x,y)
     
    list_fonction = [coucou(), hello(), afficher(4,5)]
    # mais il m’exécute automatique toutes les fonctions au démarrage.(très embétant ca)
    list_fonction = [(coucou,), (hello,), (afficher,4,5)]
    #Je passe les paramètres dans un tuple avec la fonction
    La dernière possibilité pose de nombreux problèmes ensuite.
    Car le nombre de paramètre est variable
    Ainsi je ne peux écrire param1, param2 = list_fonction[i]
    Et encore moins écrire l'appel de la fonction automatiquement ensuite car je ne connais pas encore les paramètres.

    Voilà je sais que python possède des ressources cachées alors je me demandais il n'y a pas un moment simple de rendre se morceau de code fonctionnel et flexible.

    Merci d'avance à tous
    Jep31

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    J'espère que ça pourra te mettre sur la voie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    >>> def test(*args):
    ...     return sum(args)
    ... 
    >>> liste = [(12, 5, 3), (15, 5)]
    >>> for tup in liste:
    ...     print test(*tup)
    ... 
    20
    20

  3. #3
    Nouveau membre du Club
    Inscrit en
    Mars 2011
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Mars 2011
    Messages : 5
    Par défaut
    Merci beaucoup, c'est exactement ça qui me manquait.
    Maintenant tout fonctionne parfaitement.
    J'avais déjà vu ça pour def focntion(*arg) mais j'y avais pas pensé pour l'appel de fonction.

    Voici le code fonctionnel pour ceux que ça intéresse:
    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
    16
    17
    18
     
     
    def hello():
        print "hello"
     
    def coucou(x, y):
        print "coucou {0} et {1}".format(x,y)
     
     
    list = [(coucou, 4, 5), (hello,), (coucou, 6, 2)]
     
    if __name__ == '__main__':
        print "main"
     
        for p in list:
            func = p[0]
            param = p[1:]
            func(*param)
    Cela permet d'avoir deux programmes séparés et de sans toucher au premier, de lui passer une séquence de fonctions à exécuter dans l'ordre avec paramètre. Personnellement je trouve ça trop pratique.
    Merci à toi

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction avec paramètre optionnel
    Par Damien2007 dans le forum ASP
    Réponses: 1
    Dernier message: 27/06/2007, 15h49
  2. Gestion de 5 listes déroulantes liées avec paramètres SQL
    Par kenshir0 dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 06/04/2007, 18h46
  3. Fonction avec paramètre illimité
    Par Kiboumz dans le forum Langage
    Réponses: 2
    Dernier message: 09/07/2006, 17h58
  4. [Function]Appel de fonction avec paramètre
    Par julienOriano dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/06/2006, 07h48
  5. Réponses: 4
    Dernier message: 11/09/2005, 01h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo