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 :

Composition d'instruction rassurante


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de scalpel
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Novembre 2008
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2008
    Messages : 157
    Par défaut Composition d'instruction rassurante
    Bonjour à tous.tes,

    Je débute et j'utilise le "Le Swinnen" pour apprendre.

    J'arrive à la partie traitant de la "composition d'expression" et je trouve cette possibilité du langage très rassurante.
    Jusqu'à présent dans tous les exemples et exercices rencontrés, j'étais perdu par de nombreuses instanciations.

    J'ai l'impression que regrouper les instructions rends le code bien plus facile à comprendre pour un débutant.
    Je n'arrivais pas à comprendre l'intérêt de passer systématiquement par une variable que l'on n'utilisait plus par la suite.

    Ceci n'est pas une critique négative concernant le cours.

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Bonjour,

    Je n'arrivais pas à comprendre l'intérêt de passer systématiquement par une variable que l'on n'utilisait plus par la suite.
    Tu as un exemple ?

    Car comme tu le dis, il n'y a aucun intérêt de définir une variable qu'on utiliserait pas par la suite, à part dans l'unpacking,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    _, b = (1, 2) # on utilise pas la variable a, donc pour exprimer son ignorance, on utilise la variable _.
    print(b)

  3. #3
    Membre confirmé Avatar de scalpel
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Novembre 2008
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2008
    Messages : 157
    Par défaut
    Citation Envoyé par fred1599 Voir le message
    ... Tu as un exemple ? ...
    Avant composition :
    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
    from tkinter import *
    fen1 = Tk()
     
    # création des widgets 'Label' et 'Entry'
    txt1 = Label(fen1, text = 'Premier champ :')
    txt2 = Label(fen1, text = 'Second :')
    txt3 = Label(fen1, text = 'Toixième :')
    entr1 = Entry(fen1)
    entr2 = Entry(fen1)
    entr3 = Entry(fen1)
     
    # création d'un widget 'Canvas' contenant une image bitmap :
    can1 = Canvas(fen1, width =160, height =160, bg ='white')
    photo = PhotoImage(file ='martin_p.gif')
    item = can1.create_image(80, 80, image = photo)
     
    # Mise en page à l'aide de la méthode 'grid' :
    txt1.grid(row =1, sticky =E)
    txt2.grid(row =2, sticky =E)
    txt3.grid(row =3, sticky =E)
    entr1.grid(row =1, column =2)
    entr2.grid(row =2, column =2)
    entr3.grid(row =3, column =2)
    can1.grid(row =1, column =3, rowspan =3, padx =10, pady =5)
     
    # démarrage :
    fen1.mainloop()
    Après composition :
    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
    from tkinter import *
    fen1 = Tk()
     
    # Création des widget et leurs mises en page dans la même instruction
    Label(fen1, text ='Premier champ :').grid(row =1, sticky =E)
    Label(fen1, text ='Second :').grid(row =2, sticky =E)
    Label(fen1, text ='Toixième :').grid(row =3, sticky =E)
    Entry(fen1).grid(row =1, column =2)
    Entry(fen1).grid(row =2, column =2)
    Entry(fen1).grid(row =3, column =2)
     
    # création d'un widget 'Canvas' contenant une image bitmap :
    can1 = Canvas(fen1, width =160, height =160, bg ='white')
    photo = PhotoImage(file ='martin_p.gif')
    item = can1.create_image(80, 80, image = photo)
    can1.grid(row =1, column =3, rowspan =3, padx =10, pady =5)
     
    # démarrage :
    fen1.mainloop()

  4. #4
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Du code c'est évolutif en fonction des besoins, à vous de savoir si ces variables sont utiles ou pas... L'écrivain du cours prend peut-être en considération que de définir ces variables sera peut-être un besoin pour plus tard, on est pas dans sa tête et ses considérations.
    Peut-être veut-il montrer différences de développement...

    Cependant vous avez effectivement compris que définir une variable que l'on utilisera pas par la suite est généralement inutile, c'est l'essentiel !

  5. #5
    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 scalpel Voir le message
    J'ai l'impression que regrouper les instructions rends le code bien plus facile à comprendre pour un débutant.
    Je n'arrivais pas à comprendre l'intérêt de passer systématiquement par une variable que l'on n'utilisait plus par la suite.
    Hu? Je peux toujours appliquer une méthode à un objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    >>> 'AZERTY'.lower()
    'azerty'
    >>>
    Et si ça retourne un objet, on pourra toujours lui appliquer une méthode de la même façon:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> 'AZERTY'.lower().capitalize()
    'Azerty'
    Par ailleurs dans ce que raconte le Swinnen, il y a 2 pièges/faussetés.

    1 - On ne peut composer que les non-mutables.
    Pour les mutables, c'est une balle à un coup.
    Exemple, je peux écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    >>> 'AZERTY'.lower().capitalize()
    'Azerty'
    et ajouter autant de composition que je veux car les méthodes d'une chaine de caractère retournent une nouvelle chaine de caractères à laquelle on pourra appliquer la méthode suivante.

    Avec les widgets tkinter, écrire Label().grid() retournera None car les widgets sont "mutables" (comme les listes).

    2 - Par défaut, si je crée un objet et que je ne l'assigne pas à une variable, il disparait (de toute façon, il n'est pas accessible). Et le Label devrait disparaître! Sauf que tkinter garde une référence aux instances de widgets créés: on pourra utiliser la même variable pour travailler sur plusieurs widgets ou pas de variable du tout...

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

  6. #6
    Membre confirmé Avatar de scalpel
    Homme Profil pro
    Gestionnaire de parc micro-informatique
    Inscrit en
    Novembre 2008
    Messages
    157
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Gestionnaire de parc micro-informatique
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2008
    Messages : 157
    Par défaut
    Merci pour ces explications,

    Je ne suis juste pas certain d'avoir bien compris le point 2.

    Tu veux dire que si je fais ceci (j'ai testé ça ne perturbe pas mon code) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    variable1 = Label(fen1, text ='Premier champ :').grid(row =1, sticky =E)
    variable1 = Label(fen1, text ='Second :').grid(row =2, sticky =E)
    variable1 = Label(fen1, text ='Toixième :').grid(row =3, sticky =E)
    Je vais pouvoir travailler par la suite sur les 3 widgets en même temps, en utilisant "variable1" ?

  7. #7
    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 scalpel Voir le message
    Tu veux dire que si je fais ceci (j'ai testé ça ne perturbe pas mon code) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    variable1 = Label(fen1, text ='Premier champ :').grid(row =1, sticky =E)
    variable1 = Label(fen1, text ='Second :').grid(row =2, sticky =E)
    variable1 = Label(fen1, text ='Toixième :').grid(row =3, sticky =E)
    Je vais pouvoir travailler par la suite sur les 3 widgets en même temps, en utilisant "variable1" ?
    Il y aura None dans variable1: on ne pourra rien en faire.
    Par contre on peut écrire un truc comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i in range(3):
         v = Label(fen1, text =i)
         v.grid(row=i,...)
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Instructions ROL et ROR
    Par bigbang dans le forum Assembleur
    Réponses: 13
    Dernier message: 01/03/2003, 02h06
  2. Passer de la zone d'édition vers une instruction sql
    Par tripper.dim dans le forum C++Builder
    Réponses: 2
    Dernier message: 27/11/2002, 14h44
  3. Instruction pour créer un fichier text ???
    Par Soulsurfer dans le forum Langage
    Réponses: 2
    Dernier message: 06/08/2002, 11h17
  4. [Crystal Report][VB6] instruction PrintReport
    Par yyyeeeaaahhh dans le forum SDK
    Réponses: 4
    Dernier message: 29/07/2002, 14h58
  5. [TASM] Problème concernant l'instruction LGDT
    Par Ninkosen dans le forum Assembleur
    Réponses: 3
    Dernier message: 15/07/2002, 19h09

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