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 :

Récupérer la formule d'une lambda fonction


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé

    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
    Par défaut Récupérer la formule d'une lambda fonction
    J'ai une variable qui est une lambda fonction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    fonc = lambda x: x**2+1
    Existe-t-il un moyen de récupérer la formule de fonc sous forme de chaîne de caractères "x**2+1" ?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Août 2004
    Messages
    723
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 723
    Par défaut
    Directement je ne pense pas, mais tu dois pouvoir récupérer l'arbre syntaxique avec ast (Python >= 2.6) ou compiler.ast (Python <= 2.5)

  3. #3
    Membre éprouvé

    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
    Par défaut
    Merci. Pour mon propos cela risque de demander trop de travail. Je regarderais quand même cela à l'occasion.

  4. #4
    Rédacteur
    Avatar de Zavonen
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 772
    Détails du profil
    Informations personnelles :
    Âge : 78
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 772
    Par défaut
    Suppose que ton module est enregistré sous le nom this_file.py:
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    this_file=open("this_file.py","r")
    fonc1=lambda x:x*x
    fonc2=lambda x:2*x
    n1=fonc1.func_code.co_firstlineno
    n2=fonc2.func_code.co_firstlineno
    for i in range(0,n1):
        s=this_file.readline()
    body= s.find("=")
    print s[body+1:]
    this_file.close()
    Ce qu'on trouve est plus important que ce qu'on cherche.
    Maths de base pour les nuls (et les autres...)

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2003
    Messages
    127
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2003
    Messages : 127
    Par défaut
    Toujours regardé dans les module de python
    utilise inspect
    tu aura simplement à faire
    inspect.getsource(fonc).split(':')[1]
    Voila

  6. #6
    Membre éprouvé

    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
    Par défaut
    Citation Envoyé par Tyrus Voir le message
    utilise inspect
    tu aura simplement à faire
    inspect.getsource(fonc).split(':')[1]
    C'est parfait ! Merci.

    Citation Envoyé par Tyrus Voir le message
    Toujours regardé dans les module de python
    D'accord. Mais où commencer à chercher ? C'est une autre histoire ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 30/10/2014, 15h58
  2. Tester si une variable est une lambda fonction
    Par rambc dans le forum Général Python
    Réponses: 2
    Dernier message: 15/11/2009, 18h52
  3. Récupérer le prototype d'une fonction exportée
    Par JulienDuSud dans le forum C++
    Réponses: 10
    Dernier message: 07/05/2006, 22h12
  4. [PHP 4.4.2] Récupérer les paramètres d'une fonction
    Par stailer dans le forum Langage
    Réponses: 5
    Dernier message: 07/04/2006, 21h41
  5. Récupérer le prototype d'une fonction
    Par uaz dans le forum Général Python
    Réponses: 2
    Dernier message: 27/07/2004, 17h24

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