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 plusieurs fois le retour d'un input [Python 3.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    graphiste
    Inscrit en
    Janvier 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : graphiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 4
    Par défaut Récupérer plusieurs fois le retour d'un input
    Bonjour,
    Je me demandais comment récupérer le retour d'un input pour s'en servir plusieurs fois dans d'autres fonctions(et donc que l'on est qu'une seule fois besoin de taper l'input). Dans mon exemple ici, cela marche :
    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
    19
    20
    21
     
    class ClassTest:
        def __init__(self, input_test=""):
            self.input_test = input_test
     
        def __str__(self):
            return self.input_test
     
     
    def test1(u):
        print(f"{u} test1")
     
     
    def test2(o):
        print(f"{o} test2")
     
     
    name = ClassTest(input("?"))
     
    test1(name)
    test2(name)
    'test1' et 'test2' on bien le même retour, mais le problème c'est que j'ai besoin que 'name' soit dans une fonction ou une classe, et que le fonctionnement reste le même, à savoir appeler une seule fois l'input, et le récupérer pour plusieurs fonctions.
    Savez vous comment faire ça, s'il vous plait ?

  2. #2
    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 damndamn Voir le message
    mais le problème c'est que j'ai besoin que 'name' soit dans une fonction ou une classe, et que le fonctionnement reste le même, à savoir appeler une seule fois l'input, et le récupérer pour plusieurs fonctions.
    "name" dans une fonction sera variable locale et n'existera que lors de l'exécution de la fonction... et donc inaccessible sauf à en faire le retour de la fonction stocké dans une variable qui lui survivra. Autant écrire: name = input('?') et appeler vos fonctions avec la variable name en paramètre.

    "name" dans une classe pourra être attribut d'instance ou de classe.... et au lieu de passer name en paramètre, il faudra passer la variable associée à l'instance et accéder à l'attribut "name".

    Je ne comprends pas votre besoin! Faire un programme qui fonctionne est indépendant du choix de ranger name dans X ou Y... Et ce choix est arbitraire (il doit être explicable et "j'ai besoin" n'est pas une explication mais une contrainte qui n'a pas de sens "fonctionnel" - ça marchera pareil pourvu que vous codiez çà correctement).

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

  3. #3
    Membre à l'essai
    Homme Profil pro
    graphiste
    Inscrit en
    Janvier 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : graphiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 4
    Par défaut
    bonjour,
    oui je comprends.
    en fait mon programme contient plusieurs modules. Le retour de l'input sert à donner un nom à un fichier(json) que je crée, et il doit aussi pouvoir être écrit dedans, en tant qu'information. Donc dans les différents modules, j'ai plusieurs fonctions qui doivent pouvoir se servir de ce return, que ce soit, pour le nom de création du fichier, l'écriture de ce nom dans le fichier, et donc aussi le chemin d'écriture.

  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
    Citation Envoyé par damndamn Voir le message
    Donc dans les différents modules, j'ai plusieurs fonctions qui doivent pouvoir se servir de ce return, que ce soit.
    input retourne une chaîne de caractères qu'on va stocker dans une variable...

    On pourra utiliser cette variable autant de fois qu'on veut en la passant en paramètre aux différentes fonctions/opérations qui en auront besoin que ces fonctions/méthodes soient ou pas dans le même module qui assigne à la variable ce qu'a retourné input.

    Et ce que vous n'êtes pas en train de vous faire un nœud au cerveau?

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

  5. #5
    Membre à l'essai
    Homme Profil pro
    graphiste
    Inscrit en
    Janvier 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : graphiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 4
    Par défaut
    Alors..oui, c'est possible.
    Mais le truc, c'est que pour que ça marche sur plusieurs modules, je dois faire en sorte que cette variable, soit globale, non ?
    Or apparemment, ce n'est pas très bien vu, l'utilisation de variable globale.

  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
    Citation Envoyé par damndamn Voir le message
    Mais le truc, c'est que pour que ça marche sur plusieurs modules, je dois faire en sorte que cette variable, soit globale, non ?
    La portée d'une variable dite globale est limité au module qui la définit. La variable name définie dans le module A ne sera distincte de la variable name définie dans le module B.
    On peut bien sûr utiliser l'astuce donnée dans la FAQ Python... mais il faut le faire avec prudence.

    En effet, tout va bien lorsque les variables seront accédées en lecture... mais si une ou plusieurs fonctions les modifient, il va falloir veiller à ce que les fonctions qui utilisent ces variables soient appelées après.

    Il est quand même plus prudent d'appeler les fonctions avec une variable à jour que d'espérer que la variable sera à jour lorsque la fonction sera appelée.

    - 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
    Bonjour
    Citation Envoyé par damndamn Voir le message
    en fait mon programme contient plusieurs modules. Le retour de l'input sert à donner un nom à un fichier(json) que je crée, et il doit aussi pouvoir être écrit dedans, en tant qu'information. Donc dans les différents modules, j'ai plusieurs fonctions qui doivent pouvoir se servir de ce return, que ce soit, pour le nom de création du fichier, l'écriture de ce nom dans le fichier, et donc aussi le chemin d'écriture.
    Le fait que ton programme soit découpé en plusieurs modules n'a aucune importance. Que la fonction X soit dans le script principal ou dans un script importé ne change rien, ça reste une fonction utilisable (juste que le nom de la fonction peut contenir ou pas le nom du script selon la façon dont il est importé).
    Donc tout ce que tu as à penser c'est "j'ai une fonction qui doit créer un fichier JSON, de quoi a-t-elle besoin" => réponse "le nom du fichier" et là donc tu lui passes le nom du fichier en paramètre. Mais l'emplacement de la fonction en elle-même n'a aucune importance.
    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
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Citation Envoyé par damndamn Voir le message
    bonjour,
    oui je comprends.
    en fait mon programme contient plusieurs modules. Le retour de l'input sert à donner un nom à un fichier(json) que je crée, et il doit aussi pouvoir être écrit dedans, en tant qu'information. Donc dans les différents modules, j'ai plusieurs fonctions qui doivent pouvoir se servir de ce return, que ce soit, pour le nom de création du fichier, l'écriture de ce nom dans le fichier, et donc aussi le chemin d'écriture.
    Et alors ou est votre souci ? Là je fais un exemple avec un .txt, mais c'est pareil :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    name = input("?")
    if not name.endswith('.txt'): name+= '.txt'
     
    def write_file(filename, filecontent):
        with open(filename, 'w') as fp :
            fp.write(filecontent)
     
    filecontent = "Je peux tres bien mettre le nom du fichier a l'interieur de celui-ci, comme cela : "+name
     
    write_file(name, name)
    Et si la fonction write_file n'est pas dans votre module, et bien c'est pareil sauf qu'au lieu d'avoir la définition de la fonction directement ici, vous l'avez ailleurs, et dans votre module courant vous avez un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    from blabla import write_file
    , et la fonction write_file se comporte pareil.
    De même vous pourriez construire le contenu du fichier de manière plus élaboré, en faisant appel à une fonction build_file_content par exemple, qui pourrait aussi ne pas se situer dans votre module, et ca serait là même chose.

  9. #9
    Membre à l'essai
    Homme Profil pro
    graphiste
    Inscrit en
    Janvier 2022
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Tarn (Midi Pyrénées)

    Informations professionnelles :
    Activité : graphiste
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2022
    Messages : 4
    Par défaut
    Merci, oui c'est clair, je vais revoir mon code, je me prends le chou pour rien.

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

Discussions similaires

  1. [MySQL-5.6] Script sql - LAST_INSERT_ID() affiche plusieurs fois le retour ?
    Par fd_caramba dans le forum Requêtes
    Réponses: 5
    Dernier message: 14/03/2016, 16h02
  2. [Débutant] [intersect] Récupérer plusieurs fois une même position
    Par Herevian dans le forum MATLAB
    Réponses: 2
    Dernier message: 08/05/2013, 12h58
  3. Réponses: 11
    Dernier message: 23/04/2009, 14h43
  4. Récupérer plusieurs variables dans un seul "input text"
    Par arkante1984 dans le forum Langage
    Réponses: 10
    Dernier message: 11/04/2008, 12h20
  5. Réponses: 16
    Dernier message: 19/07/2006, 00h16

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