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 :

Créer une fonction de plusieurs lignes à partir d'une chaine


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut Créer une fonction de plusieurs lignes à partir d'une chaine
    Bonjour,

    j'essaye de créer une fonction du genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def spam(x):
        y=x*x
        print y
    à partir des 3 chaines de caractères
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    "def spam(x):"
    "   y=x*x"
    "   print y"
    Mais ça ne marche pas...
    Voici ce que donne un essai qui me paraissait logique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>>exec("def spam(x):y=x*x\nprint y")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<string>", line 2, in <module>
    NameError: name 'y' is not defined
    J'ai pensé à un problème d'indentation, mais ce n'est guère mieux :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>>exec("def spam(x):    y=x*x\n    print y")
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "<string>", line 2
        print y
        ^
    Je suis bien allé voir la FAQ, mais rien sur les fonctions de plusieurs lignes...

  2. #2
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    In [46]: exec("def spam(x):\n\ty=x*x\n\tprint y\n")
     
    In [47]: spam(2)
    4
    comme ça c'est ok.
    Regarde plutôt du côté de la création de code dynamique à la volée. Je peux pas t'aider en python cependant, j'ai jamais testé.
    Bon courage.

  3. #3
    Membre Expert
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 418
    Par défaut
    exec_stmt ::= "exec" or_expr ["in" expression ["," expression]]
    http://www.python.org/doc/2.6.2/refe...tml#index-1038

    À mon avis ce sont les parenthèses qui posent problème


    EDIT:
    Non, j'ai dit une bêtise.
    Ou peut être pas.
    Pas le temps de regarder.

  4. #4
    Membre chevronné
    Profil pro
    Ingénieur sécurité
    Inscrit en
    Février 2007
    Messages
    574
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Ingénieur sécurité
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2007
    Messages : 574
    Par défaut
    ça à l'air un peu compliqué si tu veux faire ça bien, mais voici un lien intéressant (exemple 2) et la doc officielle (attention à la version de python que tu utilises).

  5. #5
    Membre confirmé Avatar de sopsag
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    224
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 224
    Par défaut
    Merci dahtah,
    en effet j'avais oublié un retour à la ligne après la déclaration !
    Du coup, python interprétait mon truc comme une déclaration de fonction sur une seule ligne, suivi d'un affichage de la globale y qui, bien sûr, n'est pas définie.

  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 sopsag Voir le message
    Bonjour,

    j'essaye de créer une fonction ... à partir des 3 chaines de caractères
    Je vais avoir besoin de ce genre de fonctionnalités. J'ai opté pour la méthode consistant à créer un fichier Python temporaire, lequel sera ensuite importé pour pouvoir être utilisé.

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

Discussions similaires

  1. [11g] Charger plusieurs lignes à partir d'une seule
    Par raz2008 dans le forum SQL*Loader
    Réponses: 2
    Dernier message: 02/12/2013, 15h55
  2. Drag de plusieurs lignes à partir d'une liste
    Par Samildanach dans le forum SWT/JFace
    Réponses: 0
    Dernier message: 15/12/2010, 10h49
  3. Réponses: 3
    Dernier message: 24/10/2008, 19h31
  4. Réponses: 2
    Dernier message: 22/10/2008, 17h53
  5. Réponses: 4
    Dernier message: 11/04/2008, 15h02

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