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 :

appelle d'une Fonction


Sujet :

Python

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Par défaut appelle d'une Fonction
    Bonsoir je débute en langage python et j'ai une question à vous posez , est-il possible d'appeler une fonction qui est dans une autre fonction ? je m'explique voici mon code :

    le problème de mon code c'est la commande=applyToLabel appelle comme son nom l'indique la fonction appluToLabel mon qui elle se trouve dans une fonction.... Si qlq peut m'aider je suis preneur....
    Merci
    cdt


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
     
    import tkinter as tk
     
    root=tk.Tk()
    root.title("test")
    root.geometry("1200x600")
     
     
     
    box_list_2 = []
    def func_1():
        def applyToLabel():
            xx=size.get()
            for i in range(xx):
                element = box_list[i].get()
                box_list_2.append(element)
        print(box_list_2)
     
     
     
     
     
    box_list = []
     
    def boxes():
        xx=size.get()
        for i in range(xx):
            box=tk.Entry(root)
            box.pack()
            box_list.append(box)
        ApplytoLabel1=tk.Button(root,text="Submit To Array",command=applyToLabel)
        ApplytoLabel1.pack()
     
     
     
     
    Array = tk.Frame(root)
    Array.pack()
     
    text1=tk.Label(Array,text="Enter number of values :",
                   font="Arial 10 bold")
    text1.grid(row=0,column=0,sticky="w")
     
    size=tk.IntVar()
     
    ArraySize=tk.Entry(Array,textvariable=size)
    ArraySize.grid(row=0,column=1,sticky="w")
     
    SizeofArray=tk.Button(Array,text="Ok",command=boxes)
    SizeofArray.grid(row=0,column=2,sticky="w")
     
     
     
     
     
    root.mainloop()

  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,

    Citation Envoyé par twisturn Voir le message
    est-il possible d'appeler une fonction qui est dans une autre fonction ?
    Techniquement, les variables créées par/dans une fonction n'existent que lorsqu'elle s'exécute. Une fois terminée, tout est détruit et avant l'appel rien n'existe.
    Exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def f():
        z = 1
        def a():
             return z * 2
        print(z, a())
    Dans cette fonction, on créé 2 variables (locales) z et a auxquelles on associe un entier et ne fonction. Puis on affiche le contenu de l'entier et le retour de la fonction.

    Avec Python, on peut aussi créer ce qu'on appelle des "closures" et faire d'une fonction un objet avec un état (une mémoire qu'elle n'a pas "de base")
    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
    >>> def f():
    ...       z = 0
    ...       def a():
    ...             nonlocal z
    ...             z += 1
    ...             return z
    ...       return a
    ...
    >>> x = f()
    >>> x()
    1
    >>> x()
    2
    >>> x()
    3
    >>>

    Citation Envoyé par twisturn Voir le message
    le problème de mon code c'est la commande=applyToLabel appelle comme son nom l'indique la fonction appluToLabel mon qui elle se trouve dans une fonction....
    C'est encore fabriqué comme une fonction mais s'appelle callback pour signifier que c'est tkinter qui l'appelle et qui en récupèrera le retour.

    Rien ne vous empêche de mettre le callback dans une closure... mais pas facile de comprendre le problème que vous cherchez à résoudre...

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

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Vendée (Pays de la Loire)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Avril 2020
    Messages : 4
    Par défaut
    En faite mon ce que je veux c'est de pouvoir réutiliser box_list2 dans func_2 par la suite.... J'ai réfléchi en me disant si je ne devrai pas mettre box_list2 en variable global même si cela n'en pas franchement recommander.....

  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
    Citation Envoyé par twisturn Voir le message
    En faite mon ce que je veux c'est de pouvoir réutiliser box_list2 dans func_2 par la suite.... J'ai réfléchi en me disant si je ne devrai pas mettre box_list2 en variable global même si cela n'en pas franchement recommander.....
    Dans votre code, box_list_2 est déjà une variable "globale"...

    De toutes façons, si vous programmez avec tkinter, difficile que les callbacks ne modifient pas l'état de variables/objets ayant une durée de vie plus grande qu'une simple fonction.

    La façon la plus simple pour réaliser çà sera d'utiliser des "variables globales".

    Sûr que si vous devez réaliser un programme de 10000 lignes avec pleins de fonctions et de variables "globales", difficile de s'y retrouver et à mettre au point.

    Mais si vous débutez vous écrirez des programmes "modestes" et inutile de connaître les solutions a des problèmes que vous n'avez pas (encore).

    En tous cas, si vous n'avez pas eu le temps de les apprendre, faites avec ce que vous savez/comprenez aujourd'hui. Dans 6 mois, vous aurez peut être progressé et capable de faire autrement.

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

Discussions similaires

  1. appel d'une fonction à partir d'un popup
    Par villeneuvejsp dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/12/2004, 17h00
  2. Appel d'une fonction
    Par georgeabitbol dans le forum ASP
    Réponses: 4
    Dernier message: 08/07/2004, 14h29
  3. Réponses: 4
    Dernier message: 02/06/2004, 16h35
  4. Appel d'une fonction
    Par jfphan dans le forum ASP
    Réponses: 4
    Dernier message: 14/04/2004, 15h06
  5. A la recherche de l'appel d'une fonction...
    Par karl3i dans le forum C
    Réponses: 3
    Dernier message: 24/09/2003, 12h34

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