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 :

comprendre une fonction [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Par défaut comprendre une fonction
    Bonjour a tous et a toutes, J'espere que vous allez bien. Je viens vers vous car j'ai besoin de votre aide pour comprendre ce que faire une fonction.
    EN effet, j'essaie de bien comprendre la logique qui est derriere une application mais certaine partie me laisse un peu perdu.

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    def on_connect(self, callback):
            def cb(*args):
                if callback:
                    callback(self)
     
            if self.password:
                self.auth(self.password, cb)
            else:
                cb()
    Premiere question : Pourquoi definir une fonction cb(*args) a ce niveau et aussi la function callaback(self), comment il est creer et utiliser
    Juste rappeller que il n'y aucune function callback defini a aucun niveau.
    J'espere avoir été aussi claire possible.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par kakoudenis Voir le message
    Premiere question : Pourquoi definir une fonction cb(*args) a ce niveau et aussi la function callaback(self), comment il est creer et utiliser
    Juste rappeller que il n'y aucune function callback defini a aucun niveau.
    J'espere avoir été aussi claire possible.
    Ben écrivez:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def on_connect(self, callback):
            if self.password:
                self.auth(self.password, callback)
            else:
                callback()
    S'il n'y a pas de callback, çà va planter.
    Donc on fabrique une fonction qui "emballe" le callback:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def on_connect(self, callback):
            def cb(*args):
                if callback:
                    callback(self)
     
            if self.password:
                self.auth(self.password, cb)
            else:
                cb()
    mais c'est du mauvais Python...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Par défaut
    Merci pour la reponse. Mais comme vous avez mentionnez ,c'est du mauvais code, donc comment alors bien produit ce code ? Merci

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par kakoudenis Voir le message
    Merci pour la reponse. Mais comme vous avez mentionnez ,c'est du mauvais code, donc comment alors bien produit ce code ? Merci
    Lorsqu'on écrit "def on_connect(self, callback):", on définit une interface qui oblige l'appelant à passer une fonction en paramètre. On pourra écrire simplement:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if self.password:
                self.auth(self.password, callback)
            else:
                callback(self)
    Si l'appelant ne respecte pas le contrat (passer une fonction en paramètre), çà plante et c'est son problème... Pour que çà devienne le problème de l'appelé, il faut accepter callback=None:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def on_connect(self, callback=None):
            if self.password:
                self.auth(self.password, callback)
            elif callback:
                callback(self)
    et si "auth" doit avoir son callback on assure le coup:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def on_connect(self, callback=None):
            if self.password:
                self.auth(self.password, callback or (lamda e: None))
            elif callback:
                callback(self)
    mais c'est plus (une sorte de) le laxisme dans la spécification des interfaces et du rôle et responsabilité de chacun (appelant/appelé) qui pose problème que de l'écrire en Python.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Mai 2012
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 45
    Par défaut
    merci pour tes responses

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

Discussions similaires

  1. Comprendre une fonction
    Par Jordan48 dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 21/05/2014, 22h20
  2. Comprendre une fonction en javascript
    Par jujufromage dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 05/02/2014, 05h50
  3. [Débutant] Aide pour comprendre une fonction
    Par Vorens dans le forum VB.NET
    Réponses: 4
    Dernier message: 21/03/2012, 15h50
  4. difficulté a comprendre une fonction
    Par roubas dans le forum MATLAB
    Réponses: 11
    Dernier message: 12/02/2009, 15h54
  5. Réponses: 2
    Dernier message: 10/01/2007, 23h28

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