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 :

Utiliser une variable une variable créer dans une fonction mais non retournée


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut Utiliser une variable une variable créer dans une fonction mais non retournée
    Bonjour,

    j'ai une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def gen_toutouille(a):
        facteur_toutouille= x
        toutouille = a*x
        return toutouille
     
    toutouille = gen_toutouille(2)
    Je voudrais savoir comment trouver le moyen de faire appel, une fois la fonction utilisée, à la valeur de sa variable "facteur_toutouille". Je ne souhaite pas utiliser de variable globale.


    Je ne dis surement pas les choses correctement, mais pouvez-vous m'orienter sur un tutos, ou sur les termes à rechercher pour trouver la solution.

    merci

  2. #2
    Rédacteur

    Avatar de danielhagnoul
    Homme Profil pro
    Étudiant perpétuel
    Inscrit en
    Février 2009
    Messages
    6 389
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant perpétuel
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2009
    Messages : 6 389
    Billets dans le blog
    125
    Par défaut


    Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def gen_toutouille(a):
        x = 7
        facteur_toutouille = x
        toutouille = a*x
        return [toutouille, facteur_toutouille]
     
    toutouille, facteur_toutouille = gen_toutouille(2)
     
    print(facteur_toutouille, toutouille) # 7, 14

    Blog

    Sans l'analyse et la conception, la programmation est l'art d'ajouter des bogues à un fichier texte vide.
    (Louis Srygley : Without requirements or design, programming is the art of adding bugs to an empty text file.)

  3. #3
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut
    Merci danielhagnoul,

    donc c'est simplement au niveau du "return" que cela se gère. J'étais bêtement persuadé que "return" ne le permettait pas.

    donc "return [a,b]" , se récupère avec a , b = fonction().

    je viens aussi de trouver cette syntaxe dans "V-B-1. Fonction qui renvoie plusieurs valeurs" dans le tutos partie 1.

    Je continue de fouiller.

    Merci

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

    Citation Envoyé par Aelurus_ Voir le message
    Fonction qui renvoie plusieurs valeurs" dans le tutos partie 1.
    Il faut arriver à penser "objet".
    La fonction ne retourne pas une valeur, elle retourne un seul objet (None par défaut).

    Lorsqu'on veut lui faire retourner plusieurs valeurs on les emballe dans un tuple.
    return a,b se lit retourne le tuple (a, b).

    Sinon, une variable créée par une fonction est une variable "locale" qui n'existe que lorsque la fonction s'exécute.
    Une fois la fonction terminée, elle n'existe plus.

    Et si vous passiez un peu de temps à essayer de comprendre ce que vous racontent les tutos. et faire les exercices, vous auriez un bien meilleur vocabulaire technique et appris ces choses là.

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

  5. #5
    Membre confirmé
    Homme Profil pro
    Curieux
    Inscrit en
    Avril 2020
    Messages
    114
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2020
    Messages : 114
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Il faut arriver à penser "objet".
    La fonction ne retourne pas une valeur, elle retourne un seul objet (None par défaut).

    - W
    Merci de la précision, mais pour le coup j'utilise les termes du tuto, ou de la partie ou j'en suis.... Il dit : "On peut classifier les fonctions selon deux critères. Une fonction peut renvoyer une valeur ou non, au terme de son exécution, et une fonction peut admettre ou non des paramètres. On va maintenant voir comment définir et utiliser ces différents types de fonctions.".

    Le tuto me dit une valeur je comprends une valeur et ce n'est que dans le chapitre suivant qu'il est fait référence au tuple, et toujours avec le terme valeur...

    Pour les exercices je ne les aient pas encore vue.

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

    Citation Envoyé par Aelurus_ Voir le message
    Le tuto me dit une valeur je comprends une valeur et ce n'est que dans le chapitre suivant qu'il est fait référence au tuple, et toujours avec le terme valeur...
    La personne qui a écrit le tuto. essaie de vous faciliter la vie en vous présentant des concepts un peu dilués histoire que vous puissiez les digérer. Puis de chapitres en chapitres, il va un peu plus loin dans les différentes facettes des concepts présentés.

    Si vous allez dans un forum pour poser des questions, pas grand monde n'a idée du plan suivi par la personne qui a écrit le tuto. on va peut être utiliser des facettes que vous n'avez pas encore vu et semer la confusion.

    Essayer de vous isoler: le tuto, l'ordinateur pour faire des exercices et vous. Et laisser vous guider par le tuto. Si vous avez une question notez la sur un cahier. Peut être que la réponse est dans les chapitres suivants. Où en tout cas, à la fin du chapitre N, vous pouvez relire les questions que vous vous posiez à la sortie du chapitre N-1 et savoir si vous avez des réponses ou pas.

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

  7. #7
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    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 832
    Billets dans le blog
    1
    Par défaut
    Bonsoir
    Citation Envoyé par Aelurus_ Voir le message
    donc c'est simplement au niveau du "return" que cela se gère. J'étais bêtement persuadé que "return" ne le permettait pas.
    Se méfier des idées préconçues...

    Citation Envoyé par Aelurus_ Voir le message
    donc "return [a,b]" , se récupère avec a , b = fonction().
    C'est l'unpacking. On le voit aussi quand on écrit (a, b)=(2, 3) ce qui permet par exemple de switcher deux variables sans passer par une 3° ((a, b)=(b, a)). A noter que les parenthèses, même si elles ne sont pas obligatoires ici, améliorent la lisibilité (d'autant plus qu'elles peuvent devenir obligatoire dans d'autres circonstances) donc perso je conseille de les mettre tout le temps dès qu'on veut coder un tuple. Surtout que pour les listes, les crochets là sont obligatoires, alors dans un souci d'uniformisation des écritures...

    Citation Envoyé par Aelurus_ Voir le message
    je viens aussi de trouver cette syntaxe dans "V-B-1. Fonction qui renvoie plusieurs valeurs" dans le tutos partie 1.
    Attention, en Python ce n'est pas "plusieurs valeurs" mais "un objet". Et si cet objet lui-même encapsule plusieurs valeurs alors c'est cadeau.

    Citation Envoyé par Aelurus_ Voir le message
    Il dit : "On peut classifier les fonctions selon deux critères. Une fonction peut renvoyer une valeur ou non, au terme de son exécution, et une fonction peut admettre ou non des paramètres.
    Je ne suis pas certain de la qualité de ce tuto. Déjà un tuto qui veut classer des choses identiques en 2 groupes distincts c'est très moyen (on se demande pourquoi Einstein a cherché durant toute sa vie l'équation qui unifierait les 4 intéractions fondamentales de la physique) et surtout en Python, une fonction renvoie toujours quelque chose (None par défaut) donc il n'y a pas de fonction qui ne renvoie pas de valeur. Quant à la distinction avec/sans paramètre admettons mais je ne vois pas trop ce que ça apporte à la compréhension du langage...

    Citation Envoyé par Aelurus_ Voir le message
    Le tuto me dit une valeur je comprends une valeur et ce n'est que dans le chapitre suivant qu'il est fait référence au tuple, et toujours avec le terme valeur...
    Donc théoriquement ta question dépasse le niveau du chapitre que tu es en train de lire. C'est pas rédhibitoire évidemment mais tu dois bien comprendre que si tu as des questions d'un niveau plus élevé que là où tu en es dans le tuto, la réponse risque alors de l'être aussi
    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]

  8. #8
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    ...et surtout en Python, une fonction renvoie toujours quelque chose (None par défaut) donc il n'y a pas de fonction qui ne renvoie pas de valeur.
    Oui tu as raison, je pense que l'auteur voulais dire qu'une fonction peut ou non contenir une instruction return.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/02/2009, 12h09
  2. Utiliser des variables applications dans une classe
    Par soso78 dans le forum VB.NET
    Réponses: 1
    Dernier message: 13/10/2008, 22h21
  3. Réponses: 21
    Dernier message: 21/08/2008, 23h30
  4. Utilisation de variable Builder dans une requete SQL
    Par _ben_ dans le forum C++Builder
    Réponses: 6
    Dernier message: 15/06/2007, 11h36
  5. Réponses: 7
    Dernier message: 15/01/2007, 18h18

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