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 :

Extraire le code d'une fonction


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut Extraire le code d'une fonction
    Bonjour à tous !

    Existe-t-il une manière pour renvoyer le code d'une fonction sous la forme d'une chaîne par exemple ?

    Je précise : j'imagine une fonction renvoieCode() qui donnerait quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def cube(a):
        return a*a*a
     
    >>>renvoieCode(cube)
    'def cube(a):
        return a*a*a'
    J'ai bien trouvé func_code, mais je crois que cela ne convient pas.

    Quelqu'un a-t-il une idée ? Merci d'avance.

  2. #2
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Une fois que ton fichier est lancé, il est compilé et le code source sous forme d'une châine de caractère n'existe plus.
    Donc tu ne pourras pas faire ce que tu veux.

    Si tu veux obtenir des infos sur ton code, tu as le module inspect ( http://python.developpez.com/faq/?pa...#FuncPrototype ) qui permet de retrouver le prototype d'une fonction.
    Tu as le module dis pour désassembler le code aussi.
    Il y en a peut-être d'autres d'utiles.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut
    C'est bien ce que je craignais ...

    Je ne vois qu'une solution : il faut fournir le fichier source non compilé à la fonction renvoieCode et faire un peu de manipulation de chaîne.

    Je passe ce sujet en résolu, merci pour ta réponse (même négative, c'est exactement ce que je voulais savoir).

  4. #4
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    Si le but est de documenter tes fonctions, tu peux utiliser les docstrings:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    def cube(a):
        """retourne le cube du nombre passé en parametre
        def cube(a):
            return a*a*a"""
     
        return a*a*a
     
    help(cube)
    en utilisant ipython:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    import urllib
    %psource urllib.urlopen

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Février 2009
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 3
    Par défaut
    J'ai bien pensé aux docstrings, mais le problème est qu'il faudra tout taper deux fois, et qu'une modification du code ne se répercutera pas sur les docstrings.

    Quand à ipython, même si cela ne résous pas mon problème (car j'ai besoin d'utiliser le code source de la fonction dans le code), je ne connaissais pas et je trouve cela particulièrement intéressant.

    En tous cas, merci pour tes suggestions.

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 05/02/2008, 13h10
  2. Réponses: 3
    Dernier message: 29/01/2008, 12h04
  3. remplacer du code par une fonction
    Par bullrot dans le forum C++Builder
    Réponses: 6
    Dernier message: 21/11/2007, 12h08
  4. [Tableaux] demande de code pour une fonction.php
    Par carmen256 dans le forum Langage
    Réponses: 4
    Dernier message: 21/01/2006, 17h22
  5. optimiser le code d'une fonction
    Par yanis97 dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 15/07/2005, 08h41

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