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 des variables dans 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
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Par défaut Récupérer des variables dans une fonction
    Bonjour,
    je débute tout juste en programmation (j'ai env 2 semaines de python entre bouquins et net) et j'ai un souci dans le programme que je dois réaliser lors de mon stage.

    J'ai défini une fonction qui attribue des valeurs à des variables et je n'arrive pas à récupérer ces variables en dehors de cette fonction (alors qu'elles sont bien visibles dans la fonction elle-même). J'ai essayé de placer ces variables dans une liste mais le problème est le même : Python me retourne une erreur de name 'variable' (ou ' list') is not defined alors que je la mets dans le return de la fonction
    Je galère là dessus depuis ce matin en essyant un peu tout dans tous les sens mais sans résultats.
    Le but est un peu plus complexe mais tant que je n'aurais pas compris pourquoi ça ne marche pas, je n'avancerai pas...
    (le but est de créer un module qui sera ensuite réutilisé en import dans plusieurs scripts différents.
    si quelqu'un peut m'éclairer...

    voici le code
    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
    18
    import os
     
    def attribuer_valeur():
    	chaine1 ="toto"
    	chaine2 = "titi"
    	chaine3 = "tata"
    	print chaine1
    	print chaine2
    	print chaine3
    	listchaine = [chaine1, chaine2, chaine3]
    	print (listchaine)
    	os.system("pause")
    	return chaine1
     
    attribuer_valeur()
    print listchaine
     
    os.system("pause")

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Salut,

    Si vous n'assignez pas ce que retourne la fonction à une variable, impossible d'y accéder.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> def f(n):
    ...    return 2*n
    ...
    >>> x = f(2)
    >>> print(x)
    4
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Par défaut
    Merci
    C'est ce que j'avais cru comprendre au travers de tous mes essais.
    Que me conseillez-vous pour réaliser ce que je souhaite faire? Existe-t'il des fonctions ou des modules qui réalisent ce genre d'affectation?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Salut,

    Citation Envoyé par olivier.breheret Voir le message
    Que me conseillez-vous pour réaliser ce que je souhaite faire? Existe-t'il des fonctions ou des modules qui réalisent ce genre d'affectation?
    Pour écrire une fonction qui retourne un objet via "return" ?
    Pour assigner son retour à une variable?

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

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Deux Sèvres (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Mai 2015
    Messages : 29
    Par défaut
    En fait ce "module" devra permettre d'attribuer des noms de fichiers en fonction de la date et du moment de leur création :

    dans un cas nous sommes sur la phase matin et je voudrais obtenir de la fonction :
    fichier_dejeuner = ("DT_"+date+"_A1_Dejeuner.xml")
    fichier_dejeunerJ7 = ("DT_"+dateJ7+"_A1_DejeunerJ7.xml")
    fichier_decoupage=(Decoupage_date_Dejeuner.csv)
    ce qui me permettrait de tester la présence de fichiers sources (xml) au bon format et de créer un fichier destination (csv) en adéquation
    #J'ai déjà codé ce qui me permet d'obtenir un string de date et de date à j+7

    Mais une seconde fonction devra me permettre de faire la même chose l'après-midi:
    fichier_diner = ("DT_"+date+"_A1_Dinerr.xml")
    fichier_dinerrJ7 = ("DT_"+dateJ7+"_A1_DinerJ7.xml")
    fichier_decoupage=(Decoupage_date_Diner.csv)

    Le soucis est que, dans cet exempla, j'ai une variable commune (fichier_decoupage) qui est affectée de 2 string différentes selon si on est le matin ou l'après-midi. (et ce n'est qu'un extrait, dans l'absolu il y en aura 7...)

    c'est essentiel pour la suite du script qui fait tout le traitement des xml(pour ne pas tout répéter 2 fois....)

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 715
    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 715
    Par défaut
    Salut,

    Je ne comprends pas où est votre problème sinon qu'il y en a au moins 2:
    • le boulot fait par la fonction en question,
    • l'interface (comment l'utiliser) avec cette fonction,

    Et vous voyez que zappe la question de "module" qui n'est qu'une question d'emballage (ou poser la fonction).

    D'après ce que vous racontez, on peut commencer avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def fonction(date=None, meridiem='am'):
          ...
          return dejeuner, dejeunerJ7, decoupage
    Le boulot de la fonction est représenté par "..." i.e. indéfini mais c'est suffisant.
    La fonction accepte 2 paramètres: date et meridiem et des défauts.
    Elle retourne un tuple: dejeuner, dejeunerJ7, decoupage

    Pour l'utiliser, il suffit de faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dejeuner, dejeunerJ7, decoupage  = fonction()
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2023
    Messages : 2
    Par défaut Bonsoir à tous.
    Citation Envoyé par olivier.breheret Voir le message
    Merci
    C'est ce que j'avais cru comprendre au travers de tous mes essais.
    Que me conseillez-vous pour réaliser ce que je souhaite faire? Existe-t'il des fonctions ou des modules qui réalisent ce genre d'affectation?

  8. #8
    Nouveau candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2023
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 25
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2023
    Messages : 2
    Par défaut Utilisez la variables global.
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Si vous n'assignez pas ce que retourne la fonction à une variable, impossible d'y accéder.
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> def f(n):
    ...    return 2*n
    ...
    >>> x = f(2)
    >>> print(x)
    4
    - W

  9. #9
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 827
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 827
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Elsita Voir le message
    Utilisez la variables global.
    Ouais alors réouvrir un topic 7 ans après pour dire une bêtise pareille c'était vraiment pas la peine !!! Les variables globales ne sont pas là pour éviter d'avoir à réfléchir mais pour résoudre des problèmes qu'on ne peut pas résoudre autrement. Commencez par apprendre Python avant de vouloir l'enseigner.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Passer des variables dans une fonction
    Par Herlece dans le forum PL/SQL
    Réponses: 11
    Dernier message: 11/07/2008, 14h18
  2. [Regex] Récupérer des Variables dans une phrase.
    Par Jimmy_S dans le forum Windows Forms
    Réponses: 3
    Dernier message: 28/05/2008, 20h50
  3. [D5] Créer dynamiquement des variables dans une fonction
    Par MelkInarian dans le forum Delphi
    Réponses: 11
    Dernier message: 14/04/2007, 12h16
  4. Réponses: 4
    Dernier message: 09/08/2006, 15h14
  5. [AS2] déclarer des variables dans une fonction
    Par ooyeah dans le forum ActionScript 1 & ActionScript 2
    Réponses: 12
    Dernier message: 02/08/2005, 12h50

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