restituer le contenu d une variable dans l'appel d une fonction
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

restituer le contenu d une variable dans l'appel d une fonction



  1. #1
    egnaro62

    restituer le contenu d une variable dans l'appel d une fonction


    ------

    Bonjour,

    Je suis en retraite depuis 9 ans et j ai décider de me mettre a Python +Pycharm + tkinter + visual studio code.

    je bloque sur un problème que je me permet de vous soumettre.

    je voudrais restituer le contenu d une variable au lieu de mettre le nom de variable dans l'appel d'une fonction
    ex:
    # i=i+1
    # mb.menu.add_command(label=str( i) + ',comptes ' + ligne,command=lambda:cptetreso (i))
    ****
    si je met en dur 1 ou 2 ou .... comme je suis dans une boucle c est impossible.

    dans le menu de mon bouton j ai bien

    1 ligne choix1
    2 ligne choix2
    mais si je click sur le choix 1 j ai 2 dans i ....
    du coup je ne peux pas récupérer des valeurs stockées au passage dans un tableau.
    merci pour votre aide

    il faut utiliser le temps avant qu'il soit passé !!!

    -----

  2. #2
    Ikhar84
    Animateur Informatique

    Re : restituer le contenu d une variable dans l'appel d une fonction

    Bonjour,

    Je ne suis pas sûr d'avoir compris la demande ?

    Tu ne veux pas utiliser de variables dans les itérations d'une boucle, mais directement des valeurs littéralles qui seront incrémentées ?

    C'est le principe même de l'utilisation des variables, pour quelle raison et dans quel contexte tu souhaite faire cela ?

    Note : attention aux doublons...

    Edit : le doublon est moins complet...
    Tu souhaite accéder aux élements d'un tableau via un indice, noté i, dans ta boucle, tu incrémentes i, pour affichage d'un menu, puis tu accès à l'élement [b]i[b/b] du tableau, sauf que i conserve la valeur obtenue lors de la dernière itération, soit 2 ?
    Dernière modification par Ikhar84 ; 08/04/2023 à 12h46.
    J'ai glissé Chef !

  3. #3
    egnaro62

    Re : restituer le contenu d une variable dans l'appel d une fonction

    avec cet extrait c est plus clair

    Code:
    #def cptetreso(i2):
    #   print("c est mon choix " + str(i2))
    #    i2=i2 - 1
     #   print (A[i2])
    
    
      #  l2.config(text='compte de tresorerie ' + str(A[i] ))
    
    #with open ("tresorerie.txt", 'r') as filin :
     #   lignes = filin.readlines ()
    #for ligne in lignes :
     #   i=i+1
        # tableau pour recuperer les valeures avec l indice choisi par le bouton
     #   A.append(ligne)
      #  label = ""
       # mb.menu.add_command(label=str(i) + ',comptes ' + ligne,command=lambda:cptetreso(i))
    je n ai que 2 lignes dans mon fichier pour mon test
    si je choisi ma premiere ligne j 'ai 2 dans i
    c est logique mais je voudrais passer la valeur de i dans cette fonction cptereso

    merci
    Dernière modification par JPL ; 09/04/2023 à 22h44. Motif: Ajoute de la balise Code pour garder l’identation

  4. #4
    egnaro62

    Re : restituer le contenu d une variable dans l'appel d une fonction

    au bout d une journee j ai trouvé la solution meme si je n ai pas tout compris ......https://forums.futura-sciences.com/i...ilies/mad2.gif

    mb.menu.add_command(label=str( i) + ',comptes ' + ligne, command=lambda i2=i: cptetreso(i2))

    merci et bonne journee

  5. A voir en vidéo sur Futura
  6. #5
    pm42

    Re : restituer le contenu d une variable dans l'appel d une fonction

    C'est lié à la façon dont Python "trouve" les variables. Avec ton écriture avant, ta lambda était une fonction qui renvoyait i, pas sa valeur mais bien le contenu de la variable.

    Ce qui est logique : tu peux très bien vouloir faire une lambda qui va renvoyer une variable qui être un cache par exemple.

    Donc tu renvoyais toujours la dernière valeur de i qui était celle de la fin de ta boucle.

    Avec la syntaxe que tu as trouvée, tu dis de ne pas renvoyer i mais la valeur de i au moment où la lambda est définie : c'est le i2=i.

    Une autre façon de faire qui marche mais est plus longue est de définir la lambda dans une petite fonction à part.

    Code:
    def build_lambda(x):
        return lambda : cptetreso(x)

  7. #6
    polo974

    Re : restituer le contenu d une variable dans l'appel d une fonction

    En lisant dans un autre fil, j'ai fini par saisir la demande (enfin, je crois)...

    Du coup, c'est du côté de partial du module functools qu'il faut voir.

    (Ok, j'arrive longtemps après la bataille...)
    Jusqu'ici tout va bien...

Discussions similaires

  1. l'appel de la fonction Watch dans MPLABX
    Par pic83 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 03/04/2020, 07h01
  2. appel d'un fichier texte dans une fonction sous matlab
    Par soldius87 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 26/04/2012, 12h34
  3. Appel d'une fonction Excel dans une macro
    Par Calia_Eowyn dans le forum Programmation et langages, Algorithmique
    Réponses: 8
    Dernier message: 26/10/2011, 10h01
  4. Faire appel à plusieurs tableau dans une même fonction
    Par krimo-30 dans le forum Électronique
    Réponses: 2
    Dernier message: 09/05/2011, 10h57
  5. Copier des trames rs485 dans une mmc et les restituer...
    Par Kell34 dans le forum Électronique
    Réponses: 0
    Dernier message: 01/07/2009, 14h52