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 :

Savoir par "qui" une fonction est appelée ?


Sujet :

Python

  1. #1
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut Savoir par "qui" une fonction est appelée ?
    Bonjour,
    dans le code ci-dessous pour savoir si la fonction est appelée pour la 1ère fois ou non, j'utilise firstCall. Cela ne me plait pas trop. Existe-t-il un moyen de savoir par qui est appelée une fonction ? Par exemple, Python sait-il indiquer que la fonction est appelée par elle-même ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/env python
    #coding=utf-8
     
    def myFunction(number, firstCall = True):
        number *= 2
        if firstCall:
            number = myFunction(number, False)
        return number
     
    print myFunction(5)
    Tout info. est la bienvenue.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    758
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2007
    Messages : 758
    Points : 970
    Points
    970
    Par défaut
    bonjour,

    en jouant avec les frames:

    http://docs.python.org/library/sys.html#sys._getframe

  3. #3
    Membre chevronné

    Profil pro
    Account Manager
    Inscrit en
    Décembre 2006
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Account Manager

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 301
    Points : 1 752
    Points
    1 752
    Par défaut
    Merci pour l'info. Un coup de Google et on obtient le code suivant :
    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
    #!/usr/bin/env python
    #coding=utf-8
     
    import sys
     
    def myFunction(number):
    # Sources :
    #    http://www.developpez.net/forums/d830747/autres-langages/python-zope/general-python/savoir-fonction-appelee/#post4759078
    #    http://michaelangela.wordpress.com/2008/03/12/pythons-sys_getframe/
     
        number *= 2
    # DFirst call of the function.
        if sys._getframe(1).f_code.co_name <> 'myFunction':
            number = myFunction(number)
        return number
     
    print myFunction(5)

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/09/2006, 18h08
  2. Réponses: 28
    Dernier message: 29/07/2006, 16h04
  3. Comment savoir qu'une fonction est standard ?
    Par D[r]eadLock dans le forum C
    Réponses: 5
    Dernier message: 24/03/2003, 14h42

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