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

  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 772
    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 772
    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 772
    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 772
    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 772
    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 772
    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
    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
    Je n ecomprends pas trop cette r�ponse �tant donn� que le nom du fichier doit contenir la date (donc pourquoi date = none?) et que meridiem est fix� � am (alors que dans mon cas il est variable : d'ailleurs ce n'est pas tout � fait am et pm mais plut�t une plage horaire genre 5-11 ou 14-20 h)
    N�anmoins, je vais creuser dans le sens que vous m'indiquez et je vous tiens au courant.
    Merci

  8. #8
    Membre Expert
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 617
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activit� : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 617
    Par d�faut
    Citation Envoy� par olivier.breheret Voir le message
    Je n ecomprends pas trop cette r�ponse �tant donn� que le nom du fichier doit contenir la date (donc pourquoi date = none?) et que meridiem est fix� � am (alors que dans mon cas il est variable : d'ailleurs ce n'est pas tout � fait am et pm mais plut�t une plage horaire genre 5-11 ou 14-20 h)
    N�anmoins, je vais creuser dans le sens que vous m'indiquez et je vous tiens au courant.
    Merci
    Il faudrait sans doute commencer par les bases car manifestement, vous avez zapp� des �tapes dans votre apprentissage. Le Swinnen est tr�s bien.
    http://www.developpez.net/forums/d11...erard-swinnen/

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

    Citation Envoy� par olivier.breheret Voir le message
    Je n ecomprends pas trop cette r�ponse �tant donn� que le nom du fichier doit contenir la date (donc pourquoi date = none?) et que meridiem est fix� � am (alors que dans mon cas il est variable : d'ailleurs ce n'est pas tout � fait am et pm mais plut�t une plage horaire genre 5-11 ou 14-20 h)
    Vous pouvez choisir 0, 1 comme index dans les plages horaires qui vous int�ressent.
    note: vous allez les repr�senter comment? Ah oui, vous proposiez de faire deux fonctions qui font peu ou prou le m�me boulot � cela pr�s...

    "date" est � None car c'est une bonne valeur par d�faut pour un exemple.

    Reste que vous avez � d�couper le boulot en deux parties: l'interface et le service que �� doit rendre.
    Savoir o� passer le couteau pour d�finir l'interface et r�le et responsabilit� entre appelant et appel� est un boulot de boucher: il faut un grand couteau et surtout pas de regrets car une fois que la viande est tranch�e, c'est tranch�. Je vous propose un truc, vous pouvez en pr�f�rez un autre... in fine, c'est vous qui allez coder donc vous le faites comme vous sentez pourvu qu'� la fin �� fonctionne n'a pas grande importance (enfin si mais nous ne sommes pas dans le forum conception mais dans un forum de programmation accessoirement Python... Dit autrement, les seules questions que vous devriez poser ici devrait porter sur comment r�aliser le service attendu par la fonction et non sur qu'est-ce qui lui est donn� et ce qu'on en re�oit).

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

  10. #10
    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 pour le lien mais je suis en 2.7 (impos� par la soci�t� o� je suis en stage.
    Comme je le disais, je vais creuser les diff�rentes pistes propos�es.
    quant au dernier message : c'est du charabia pour moi!! et ouais je d�bute...... mais je suis l�!
    slts

  11. #11
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2006
    Messages
    12 850
    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 850
    Billets dans le blog
    1
    Par d�faut
    Citation Envoy� par olivier.breheret Voir le message
    Merci pour le lien mais je suis en 2.7 (impos� par la soci�t� o� je suis en stage.
    Bonjour

    Le swinnen existe aussi pour 2.7.
    Sinon pour ton histoire de noms j'ai rien compris. Toutefois ce que wiztricks tente de t'expliquer, c'est que "d�jeuner" ou "diner" c'est en fait (du point de vue Python) exactement la m�me chose (une simple string qui change de valeur) donc tu peux alors �crire une seule fonction g�n�rale qui factorisera tout ce qui est commun dans un code fixe, et r�cup�rera tout ce qui d�pend de l'environnement (matin ou soir) sous forme de param�tre que l'appelant devra posiitonner correctement.

    Sinon pour le reste une fonction Python c'est de la balle. Elle peut te renvoyer des trucs tout simples (comme des int/char/float) ou bien des trucs super complexes (comme des listes/dicos/objets). wiztricks te montre un exemple d'une fonction renvoyant un tuple de 3 valeurs que tu peux r�cup�rer en une op�ration dans 3 variables distinctes....
    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]

  12. #12
    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 � tous!
    A la lumi�re de vos explications j'ai r�ussi � faire ce que je voulais (m�me mieux car je n'ai qu'un module, l� o� j'en avais imagin� 2)
    l'utilisation d'un tuple est effectivement la soluce

  13. #13
    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

  14. #14
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ing�nieur d�veloppement logiciels
    Inscrit en
    F�vrier 2006
    Messages
    12 850
    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 850
    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]

  15. #15
    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?

+ 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