Créer une fonction automatiquement

Fermé
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 - Modifié le 11 mars 2021 à 18:34
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 - 11 mars 2021 à 21:49
Bonjour,

J'utilise python 2.7.17.
Je s voudrais savoir si il y a le moyen de créer des fonctions automatiquement du style :
def fonction_1(paramétré):
       ...................

def fonction_2(paramétré):
       ...................

etc....


Quel possibilité j'ai ?
Merci d'avance pour votre aide et conseils.

Configuration: Linux / Firefox 86.0
A voir également:

4 réponses

yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 Ambassadeur 1 554
11 mars 2021 à 18:44
bonjour,
peux-tu donner un exemple de ce que tu veux réaliser?
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
11 mars 2021 à 18:46
la source d'un programme, c'est du texte.
tu peux donc parfaitement écrire un programme qui crée un texte que tu utiliseras comme source d'un programme.
0
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 14
Modifié le 11 mars 2021 à 19:08
Bonjour,

C'est pour créer des fonctions avec non du fichier.
def "fenetre_fichier__"+nom_du_fichier():

Dans chaque fonction il y a une fenêtre qui a un champs de saisi Text et un scroolbar.
L'utilisateur doit remplir le champs de saisi et lorsque qu'il cliquer sur le bouton valider le fichier ce créer sur le disque dur le contenue du fichier. Il s'agit de créer des fichiers #bash, txt.
Le problème que je rencontre est que si l'utilisateur veux cré entre temps un fichier je ne peut pas créer la fonction a l'avance au nom de son fichier ??
Merci d'avance.

def fenetre_fichier_control_projet(fichier, chemin, nom_appli):
    global T2
    supprime_frame(1)
    supprime_frame(2)
    supprime_frame(3)
    supprime_frame(4)
    supprime_frame(5)
    print
    print "fenetre_fichier_control_projet"
    print "------------------------------"
    print
    print "fichier : ", fichier
    print "chemin : ", chemin
    print "nom_appli : ", nom_appli
    print
    tk.Label(Frame1, text="     Fichier control     ", fg='black', justify=LEFT).grid(row=1, column=0)
    tk.Label(Frame1, text="").grid(row=2, column=0)
    tk.Label(Frame2, text="").grid(row=0, column=0)
    tk.Label(Frame2, text="Si besoin, vous pouvez modifier le contenu du fichier copyright pour le personnaliser").grid(row=1, column=1)
    tk.Label(Frame2, text="").grid(row=2, column=0, sticky="w")

    #Verifie si la liste projet est vide, si vide affiche le texte par defaut, sinon affiche la liste projet
    if not liste_principale[1][5]:
        print ("La liste projet est vide")
        print ("La liste par defaut est affiché")
        MESSAGE = liste_fichier_control_defaut[0]
    else:
        print ("La liste projet n'est pas vide")
        print ("La liste projet est affiché")
        MESSAGE = liste_principale[1][5]
        
    S = Scrollbar(Frame4)
    T2 = Text(Frame4, height=11, width=100) #height=5, width=50 8, width=45
    T2.insert(END, MESSAGE)
    S.pack(side=RIGHT, fill=Y)
    T2.pack(side=LEFT, fill=Y)
    S.config(command=T2.yview)
    T2.config(yscrollcommand=S.set)
    T2.pack(side = LEFT)
    
    tk.Button(Frame5, text='Par défaut', command=lambda x="control": par_defaut(x, 5, fichier, chemin, nom_appli)).grid(row=0, column=0, sticky=tk.W, pady=4)
    tk.Button(Frame5, text='Aide', command=lambda x=liste_aide_fichier_control: aide_fichier(x)).grid(row=0, column=1, sticky=tk.W, pady=4)
    tk.Button(Frame5, text='Effacer', command=effacer_text).grid(row=0, column=2, sticky=tk.W, pady=4)
    tk.Button(Frame5, text='Valider', command=lambda x=T2: valider_fenetre_fichier_control_projet(x, chemin)).grid(row=0, column=3, sticky=tk.W, pady=4)
    tk.Button(Frame5, text='Remplissage automatique', command=lambda x="control": remplissage_semi_automatique(x, 5, T2, fichier, chemin, nom_appli)).grid(row=0, column=5, sticky=tk.W, pady=4)
   

def valider_fenetre_fichier_control_projet(T2, chemin): 
    global liste_principale
    detail_fichier = []
    detail_fichier.append(chemin)
    detail_fichier.append("0") #liste_principale[1][18][0]
    detail_fichier.append("5") #liste_principale[1][5]
    detail_fichier.append("0") #liste_principale[0][2][0]
    liste_principale[1][18][0] = detail_fichier
    print
    print "liste_principale[1][5] : ",liste_principale[1][5]
    print
    print "liste_principale[1] : ",liste_principale[1]
    print
    print "liste_principale : ",liste_principale
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
11 mars 2021 à 19:13
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

pourquoi toutes des fonctions différentes, plutôt que passer le nom de fichier en paramètre?

quand tu écris "dans chaque fonction il y a une fenêtre qui a un champs de saisi Text et un scroolbar",
je pense que ce n'est pas correct, les fonctions python n'ayant ni fenêtre, ni champ, ni barre de défilement.

tu n'expliques pas ce que tu veux réaliser, tu décris une méthode que tu penses utiliser pour y arriver.
0
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 14
Modifié le 11 mars 2021 à 19:29
re,

question 1 : pourquoi toutes des fonctions différentes, plutôt que passer le nom de fichier en paramètre?
réponse : dans les paramètres il y a fichier. comment créer une fonction automatiquement avec les paramètres

question 2 : quand tu écris "dans chaque fonction il y a une fenêtre qui a un champs de saisi Text et un scroolbar",
je pense que ce n'est pas correct, les fonctions python n'ayant ni fenêtre, ni champ, ni barre de défilement.
réponse : Oui je suis d'accord, c'est une façon de me repérer dans le code pour chaque fichier à remplir.

question 3 : tu n'expliques pas ce que tu veux réaliser, tu décris une méthode que tu penses utiliser pour y arriver.
réponse : Remplir des fichiers pré-rempli de type txt par l'utilisateur, (fichier de configuration) qu'il peux modifier avec le champs de saisi Text.
Le problème est que si l'utilisateur créer un fichier, comment je cré la fonction a l'avance pour ce fichier ?
Merci.
0
xunil2003 Messages postés 766 Date d'inscription mercredi 17 novembre 2004 Statut Membre Dernière intervention 29 septembre 2024 14
11 mars 2021 à 19:41
Re,

Vous voulez dire dans une seul fonction passer en paramètre le nom du ficher de façon a ce que l'utilisateur, puisse modifier le contenu du fichier lorsqu’il clique sur la barre de bouton du menu principale.
Merci.
0
yg_be Messages postés 23352 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 27 novembre 2024 1 554
11 mars 2021 à 21:49
en effet, je voulais dire "pourquoi toutes des fonctions différentes, plutôt que passer le nom de fichier en paramètre à une fonction unique".

une fonction, en principe, est une entité de traitement (un groupe d'instructions), dont le comportement change en fonction des paramètres reçus. dans la plupart des cas, on ne crée pas dynamiquement de fonction. beaucoup de langages ne le permettent d'ailleurs pas. c'est très rarement une bonne pratique.

il est, par contre, courant de créer dynamiquement d'autres éléments, comme des sous-fenêtres, des boutons, etc...

il me semble que tu continues à confondre "fonction" avec des éléments liés à l'interface avec l'utilisateur.
je pense que ta "façon de me repérer dans le code pour chaque fichier à remplir" est déficiente. peut-être que tu abordes le problème à l'envers.
0