Partage
  • Partager sur Facebook
  • Partager sur Twitter

La fonction importée agit sur un paramètre local

    6 avril 2015 à 12:07:27

    Bonjour, je débute sur Python et j'ai un soucis

    J'ai créé deux fichiers: fonction et scrip

    Dans fonction :

    def fct_a():

              print(a)

    Dans scrip :

    import os

    from fonction import *

    a = input("a?") # j'affecte à a une valeur choisie par l'utilisateur. J'imagine que cette valeur prise par a n'est valable que dans scrip

    # ensuite je voudrais afficher dans scrip cette valeur via la fonction fct_a de mon fichier fonction

    fct_a()

    #sauf que là problème, il me dit que a n'est pas définie.

    #Mon ambition n'est pas de simplement afficher a, mais je crois que mon soucis se manifeste dans un script aussi simple: comment faire que la fonction importée et qui est censée utiliser un paramètre x, reconnaisse la variable x définie dans le script où elle est invoquée? Car quand la fonction importée est exécutée dans le script et bien que le paramètre soit définie dans le script, la fonction ne le reconnais pas comme celui qu'elle doit utiliser. J'ai essayé avec global mais ça ne m'a rien donné. Y a t-il donc un moyen d'indiquer à la fonction qu'elle doit travailler sur un paramètre présent dans le script où elle est invoquée?

    Merci beaucoup de l'aide , bonne journée

    • Partager sur Facebook
    • Partager sur Twitter
      6 avril 2015 à 12:20:07

      Non. Il n'y a aucun moyen de faire ça. D'un autre côté il n'y en a jamais besoin.

      • Partager sur Facebook
      • Partager sur Twitter
      Zeste de Savoir, le site qui en a dans le citron !
        6 avril 2015 à 12:25:13

        Salut, Peut tu mettre ton code avec l'outil "importation de code" car là je comprends rien ^^
        • Partager sur Facebook
        • Partager sur Twitter
          6 avril 2015 à 13:38:19

          def fct_a():
          	print(a)
           
          import os from fonction import * a = input("a") fct_a() print(a)

          Salut BatisteDalari, je cherchais à ce que ma fonction importée utilise la variable a définie en scrip; le soucis étant qu'elle me dise que a (qui doit être utile dans la fonction) n'est pas définie alors que l'utilisateur lui a affecté une valeur dans l'exécution du code de scrip.

          Nohar merci de ta réponse, mon projet était de créer un répertoire de fonctions que je puisse importer et réutiliser dans mon programme (à l'image du répertoire math par exemple qui permet d'utiliser log(), sqrt() etc). Pour l'exemple que j'ai donné ici c'est en fait la fonction print() que j'ai essayé de recréer (si je ne me trompe pas). Donc si j'ai bien compris, pour que des fonctions que je crée puissent être utiles à un programme, il faut les intégrer dans le même document de code et non pas les importer d'un autre fichier de code (d'ailleurs il me semble que la fonction aboutit a un Nonetype si je veux capturer le résultat, ce qui est inutilisable?) . Si je veux appliquer à un paramètre une fonction, il faut nécessairement que je la réécrive dans le code (au tout début par exemple je définis les fonctions) c'est bien ça?

          Moi qui voulait alléger mon code c'est raté :D

          Merci beaucoup pour vos réponses !

          -
          Edité par SamuelSaw1 6 avril 2015 à 13:39:38

          • Partager sur Facebook
          • Partager sur Twitter
            6 avril 2015 à 14:14:42

            As-tu essayé ta fonction depuis ton script fonction? T'as pas remarqué une erreur??

            • Partager sur Facebook
            • Partager sur Twitter
              6 avril 2015 à 14:15:54

              Non, c'est juste que tu utilises mal les fonctions.

              Pour qu'une fonction soit réutilisable, il suffit de lui passer les données dont elle a besoin en arguments.

              def fct_a(a):
                  print(a)
              

              Je pense que tu gagnerais à retourner lire un cours de Python pour apprendre à te servir correctement des fonctions.

              -
              Edité par nohar 6 avril 2015 à 14:18:26

              • Partager sur Facebook
              • Partager sur Twitter
              Zeste de Savoir, le site qui en a dans le citron !
                6 avril 2015 à 14:35:15

                def fct_a(a):
                	a+=1
                	print(a)
                 
                import os from fct import fct_a a = int(input("a?")) fct_a(a) print(a)


                Oh oui je me rends compte de mon erreur!

                Je m'excuse et vous remercie pour votre éclairage ^^

                Néanmoins il y a une chose que je n'arrive pas à réaliser et c'est ce qui m'avait amené à poser cette première question

                Je voudrais pouvoir appliquer à ma variable une fonction et ensuite capter son image par la fonction. Seulement si j'essaye j'obtiens un Nonetype, et vu que ma fonction fonctionne au paramètre, je ne peux pas mettre global dans la fonction. Comment pourrais-je capturer l'image de mon paramètre par la fonction?

                • Partager sur Facebook
                • Partager sur Twitter
                  6 avril 2015 à 14:45:33

                  Avec return probablement. Mais il faut que tu ailles d'abord lire un cours, avant de te lancer dans toutes ces questions.

                  def incrementer(a):
                  
                  return a + 1
                  

                  ma_variable = 5 ma_variable = incrementer(ma_variable) print(ma_variable)

                  </pre>

                  -
                  Edité par Dan737 6 avril 2015 à 14:47:40

                  • Partager sur Facebook
                  • Partager sur Twitter
                    6 avril 2015 à 15:58:16

                    Ca marche !

                    Merci beaucoup d'avoir répondu ! Je ne maîtrisais pas return, je l'avais aperçu dans mon cours mais n'en avais pas compris le fonctionnement

                    Ca m'aide beaucoup pour continuer à apprendre/comprendre Python, je suis à la moitié de mon cours :ange:

                    Merci encore et bonne soirée/fête à vous :)

                    • Partager sur Facebook
                    • Partager sur Twitter

                    La fonction importée agit sur un paramètre local

                    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                    • Editeur
                    • Markdown