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 :

Moyen d'analyser AVANT/APRÈS [Python 3.X]


Sujet :

Python

  1. #1
    Membre du Club
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étude des gammes)
    Inscrit en
    janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étude des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : janvier 2021
    Messages : 44
    Points : 54
    Points
    54
    Par défaut Moyen d'analyser AVANT/APRÈS
    Bonjour,

    Mon programme comporte de nombreuses lignes et quelques modules.

    Les print m'aident à y voir clair lorsque je cherche une ou des solutions.
    C'est en retirant l'instruction print que je me suis apperçu de ce phénomène que je ne comprend pas.

    En exécutant ce petit code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def inv_acc(n):
        print(f' Plouc {n}')
     
     
     
     
    if __name__ == '__main__':
        print(f' GEM Quelle seption !')
        inv_acc(1)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     GEM Quelle seption !
     Plouc 1
    En exécutant celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def inv_acc(n):
        (f' Plouc {n}')
     
     
     
     
    if __name__ == '__main__':
        print(f' GEM Quelle seption !')
        inv_acc(1)
    Ainsi qu'avec IDLE :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Type "help", "copyright", "credits" or "license()" for more information.>>> 
    >>> print('Hello', 4)
    Hello 4
    >>> ('Hello', 4)
    ('Hello', 4)
    Si je poste ce message qui n'est pas un réel problème, sinon que de voir cette hallucination perdurer dans le temps.
    Car cet effet de codage m'intéresse vraiment, et je suggère de ne pas enlever cette possibilité. Et l'améliorer si besoin.

    Rectification :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    if dan == 66:    """Initialisation des tableaux majeurs du 66"""
    # Recherche Point Go & tonic [0, 0, 0, 0, 0, 0, 0] :maj_mode[66]
        # Enregistrement Poids modaux :maj_poids[66]
    (lineno(), 'Dana', dana[dan], dan)
        # 84 Dana [[[0, 0, 0, 5, 0, 0, 0], [588, 84.0, 12.0, 1.7142857142857142,
        # 0.24489795918367346]], [[0, -3, -4, 0, 0, -7, -8], [0]], [[0, 0, -4, 0, 0, 0, -8],
        # [490, 70.0, 10.0, 1.4285714285714286, 0.20408163265306123]], [[0, 0, 0, 0, 0, 0, 0],
        # [833, 119.0, 17.0, 2.4285714285714284, 0.3469387755102041]], [[0, -3, -4, 0, -6, -7, -8],
        # [196, 28.0, 4.0, 0.5714285714285714]], [[0, 0, -4, 0, 0, -7, -8], [343, 49.0, 7.0, 1.0]],
        # [[0, 0, 0, 0, 0, 0, -8], [784, 112.0, 16.0, 2.2857142857142856, 0.32653061224489793]]] 66
    for dn in range(7):
    , music@toumic 2.0. Site internet : https://www.cabviva.fr
    Centre Riche Intellect Music Quantic : OneNote

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 435
    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 : 18 435
    Points : 31 860
    Points
    31 860
    Par défaut
    Salut,

    Lorsqu'on exécute un script, seules les sorties des "print" s'affichent.
    Avec l'interpréteur Python (les ">>>" qui s'affichent) le résultat de l'évaluation de l'instruction s'affiche (même si on n'a rien demandé) sauf si c'est None:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> (1,2)
    (1, 2)
    >>> 1
    1
    >>> None
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre du Club
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étude des gammes)
    Inscrit en
    janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étude des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : janvier 2021
    Messages : 44
    Points : 54
    Points
    54
    Par défaut
    Belle réponse merci wiztricks

    Un dernier questionnement, existe t'il une esquive permettant de reproduire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if dan == 66:"""Initialisation des tableaux majeurs du 66"""# Recherche Point Go & tonic [0, 0, 0, 0, 0, 0, 0] :maj_mode[66]
        # Enregistrement Poids modaux :maj_poids[66]
    (lineno(), 'Dana', dana[dan], dan)
        # 84 Dana [[[0, 0, 0, 5, 0, 0, 0], [588, 84.0, 12.0, 1.7142857142857142,
        # 0.24489795918367346]], [[0, -3, -4, 0, 0, -7, -8], [0]], [[0, 0, -4, 0, 0, 0, -8],
        # [490, 70.0, 10.0, 1.4285714285714286, 0.20408163265306123]], [[0, 0, 0, 0, 0, 0, 0],
        # [833, 119.0, 17.0, 2.4285714285714284, 0.3469387755102041]], [[0, -3, -4, 0, -6, -7, -8],
        # [196, 28.0, 4.0, 0.5714285714285714]], [[0, 0, -4, 0, 0, -7, -8], [343, 49.0, 7.0, 1.0]],
        # [[0, 0, 0, 0, 0, 0, -8], [784, 112.0, 16.0, 2.2857142857142856, 0.32653061224489793]]] 66 for dn in range(7):
    En programmant j'ai parfois besoin de me raffraichir la mémoire, et je le fais en revoyant cette petite aide.

    Existe t-il une solution pour assister la gestion du code ? La detection des erreurs n'est pas le sujet.
    , music@toumic 2.0. Site internet : https://www.cabviva.fr
    Centre Riche Intellect Music Quantic : OneNote

  4. #4
    Membre éprouvé
    Inscrit en
    février 2003
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : février 2003
    Messages : 1 235
    Points : 1 279
    Points
    1 279
    Par défaut
    Citation Envoyé par toumic2.0 Voir le message
    Existe t-il une solution pour assister la gestion du code ? La detection des erreurs n'est pas le sujet.
    Assister la gestion du code, c'est à dire ?

    Tu parles de tester le code ?

  5. #5
    Membre du Club
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étude des gammes)
    Inscrit en
    janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étude des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : janvier 2021
    Messages : 44
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Arioch Voir le message
    Assister la gestion du code, c'est à dire ?

    Tu parles de tester le code ?


    • Assister la gestion du code, c'est à dire ?


    Quand je code je fais évoluer le programme, et pendant ce temps à un moment donné de cette exécution il est probable de vouloir se rafraichir la mémoire. Car les codes peuvent dériver & alors les 1ers éléments s'en trouvent éloignés. Par conséquent la création d'une bibliothèque avec des appelants venant basculer les parties du code à un mode print automatisé.


    • Tu parles de tester le code ?


    Non.
    , music@toumic 2.0. Site internet : https://www.cabviva.fr
    Centre Riche Intellect Music Quantic : OneNote

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    juin 2008
    Messages
    18 435
    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 : 18 435
    Points : 31 860
    Points
    31 860
    Par défaut
    Salut,

    Pas sûr d'avoir tout compris mais rien n'empêche d'avoir des "print" conditionnels du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if DEBUG_XYZ:
       print(...)
    lorsqu'on veut afficher les messages de la partie XYZ, on définit DEBUG_XYZ à True et voilà.

    note: le module logging intègre aussi ce genre de fonctionnalités/possibilités.

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

  7. #7
    Membre du Club
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étude des gammes)
    Inscrit en
    janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étude des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : janvier 2021
    Messages : 44
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    Salut,

    Pas sûr d'avoir tout compris mais rien n'empêche d'avoir des "print" conditionnels du genre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if DEBUG_XYZ:
       print(...)
    lorsqu'on veut afficher les messages de la partie XYZ, on définit DEBUG_XYZ à True et voilà.

    note: le module logging intègre aussi ce genre de fonctionnalités/possibilités.

    - W
    À 1ére vue ça ressemble pas mal du tout à çà
    , music@toumic 2.0. Site internet : https://www.cabviva.fr
    Centre Riche Intellect Music Quantic : OneNote

  8. #8
    Membre éprouvé
    Inscrit en
    février 2003
    Messages
    1 235
    Détails du profil
    Informations forums :
    Inscription : février 2003
    Messages : 1 235
    Points : 1 279
    Points
    1 279
    Par défaut
    Je proposerais également le logging. On l'utilise dans ma société de manière à uniformiser nos logs de tous horizons, les rassembler et faire du monitoring dessus.

    Sinon, une petite fonction toute bête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def print_debug(debug: bool, msg: str) -> None:
        if debug:
            print(msg)
     
     
    def main() -> None:
        '''Main function'''
        print_debug(True, "ce texte doit s'afficher")
        print_debug(False, "mais pas celui-ci")
     
     
    if __name__ == '__main__':
        main()

  9. #9
    Membre du Club
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étude des gammes)
    Inscrit en
    janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étude des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : janvier 2021
    Messages : 44
    Points : 54
    Points
    54
    Par défaut
    Citation Envoyé par Arioch Voir le message
    Je proposerais également le logging. On l'utilise dans ma société de manière à uniformiser nos logs de tous horizons, les rassembler et faire du monitoring dessus.

    Sinon, une petite fonction toute bête :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    def print_debug(debug: bool, msg: str) -> None:
        if debug:
            print(msg)
     
     
    def main() -> None:
        '''Main function'''
        print_debug(True, "ce texte doit s'afficher")
        print_debug(False, "mais pas celui-ci")
     
     
    if __name__ == '__main__':
        main()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # OK MERCI :)
    """Utile pour activer les print"""
    , music@toumic 2.0. Site internet : https://www.cabviva.fr
    Centre Riche Intellect Music Quantic : OneNote

  10. #10
    Membre du Club
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étude des gammes)
    Inscrit en
    janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étude des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : janvier 2021
    Messages : 44
    Points : 54
    Points
    54
    Par défaut
    Juste comme ça

    Employer logging à partir de différents modules

    Si votre programme est composé de plusieurs modules,
    voici une façon d'organiser l'outil de journalisation :# myapp.py
    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
    import logging
    import mylib
    
    def main():
        logging.basicConfig(filename='myapp.log', level=logging.INFO)
        logging.info('Started')
        mylib.do_something()
        logging.info('Finished')
    
    if __name__ == '__main__':
        main()
    
    
    # mylib.py
    import logging
    
    def do_something(): 
    
    logging.info('Doing something')
    , music@toumic 2.0. Site internet : https://www.cabviva.fr
    Centre Riche Intellect Music Quantic : OneNote

  11. #11
    Membre du Club
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étude des gammes)
    Inscrit en
    janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étude des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : janvier 2021
    Messages : 44
    Points : 54
    Points
    54
    Par défaut
    Une dernière instruction

    Warnin pour écrire :
    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
     
    # Python3 UTF-8# Utilité : Module logging
     
     
    import logging
    import mylib
     
     
    def main():
        logging.warning('Ligne 12')
        print('#mylog', 'Ligne 12')
        mylib.funfonc()
     
     
    ('#mylog')
     
     
    if __name__ == '__main__':
        main()
    Pour ce résultat
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    === RESTART: C:/Users/Vincent/Desktop/Python Perso/mylog.py ==#mylib
    WARNING:root:Ligne 12
    #mylog Ligne 12
    WARNING:root:mylib.funfonc
    , music@toumic 2.0. Site internet : https://www.cabviva.fr
    Centre Riche Intellect Music Quantic : OneNote

  12. #12
    Membre éclairé Avatar de Bayard
    Inscrit en
    juin 2002
    Messages
    802
    Détails du profil
    Informations forums :
    Inscription : juin 2002
    Messages : 802
    Points : 663
    Points
    663
    Par défaut
    Il existe également le débugueur python

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    import pdb
     
    if a == 2:
       pdb.set_trace()
    quand a vaudra 5, il y a un point d'arrêt et on peut faire du pas à pas ou regarder l'historique

    plus d'information: https://docs.python.org/fr/3/library/pdb.html

    Bonne journée
    Si tu ne vis pas ce que tu penses alors tu penses ce que tu vis.

  13. #13
    Membre du Club
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étude des gammes)
    Inscrit en
    janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étude des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : janvier 2021
    Messages : 44
    Points : 54
    Points
    54
    Par défaut
    Ainsi qu'une méthode fort simple

    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
    """ { *** | MODE ONE | HORS MODE RUN | *** } Retrouver l'oubli ?Assimiler avec un programme ayant trois sections.
        1. Section Table [Légumes] *
        2. Section Menus [Enfants] *
        3. Section Music [Gammics] *
    ______________________________ *
    # Utilitaire Dictionnaire.traceur Fonction.{DICTrace}
    ### Code bidule.py  # Module principal
                   |Table.[Légumes].Fonction.[]
    Traçage Section Menus.[Enfants].Fonction.[]
                   |Music.[Gammics].Fonction.[]
    Écriture codée du bidule.[Légumes]
    Bidule donne du travail à ventre
    ### Code ventre.py  # Sous Module
    Traçage informations comme bidule.py {DICTrace}
    Écriture codée du ventre.[Enfants]
    Ventre donne du travail à écoute
    ### Code écoute.py  # Sous Module
    Traçage informations comme bidule.py {DICTrace}
    Écriture codée d'écoute.[Gammics]
    """  # Gagner en visibilité ~ Prints de recherche en moins
    # Création dictionnaire traceur {DICTrace}
    # En cours des 1ères lignes de codage...
    # Enregistrement des ancrages {DICTrace}
    #   Ancrage ; (chemin.)Module.Section.Fonction.[Print]
    # Mise à jour {DICTrace}
    # Informations sensibles :
    #   Organisation des points de consultation
    #       Section[Table].[] ou [Table].Fonction.[] ou {DICTrace}
    # {DICTrace} dissémine des ancres(print) dans l'application
    # {DICTrace} accessible culbuteur print(défaut.ONE)
    """Autre(s) Ancre.(print).(ONE, OFF, ISO, OUT)"""
    # {DICTrace} gestion parenthèses sans print
    """ # {DICTrace} Print Parent
    Ancre(print).ONE = print()
    Ancre(print).OFF = rien
    Ancre(print).ISO = info_bulle.Origine + .Locale hypertexte
        Origine : À l'emplacement de l'ancrage.
        Locale : Notification utilisateur ailleurs
    Ancre(print).OUT = info_bulle.Locale hypertexte """
    traçancrage.pdf
    , music@toumic 2.0. Site internet : https://www.cabviva.fr
    Centre Riche Intellect Music Quantic : OneNote

  14. #14
    Membre du Club
    Avatar de toumic2.0
    Homme Profil pro
    Gammologie (Étude des gammes)
    Inscrit en
    janvier 2021
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Gammologie (Étude des gammes)
    Secteur : Arts - Culture

    Informations forums :
    Inscription : janvier 2021
    Messages : 44
    Points : 54
    Points
    54
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    for fk, fv in fondre.items():  # fondre: Binaires + Poids basic (de 1 à 66)    
        (lineno(), 'Fondre', fk, fv)
        # 67 Fondre 66 [(('101010110101', 5), 66), (('101011010101', 0), 66)]
    for uk, uv in unic.items():  # unic: Tonalités à deux altérations
        (lineno(), 'Unic', uk, uv[:12], '\n', uv[12:])
        # 70 Unic 66 ['1', '0', '2', '0', '3', '4', '0', '5', '0', '6', '0', '7']
        # [[((0, 66), '101011010101')]]
    Et en plus ça ne crée pas d'erreur, et ça évite d'écrire pass ou break.
    Si ça ne vous dérange pas d'attendre les fins des boucles for
    Ok c'est rectifié
    , music@toumic 2.0. Site internet : https://www.cabviva.fr
    Centre Riche Intellect Music Quantic : OneNote

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [WD12] Version analyse avant ou après
    Par zouzoukha dans le forum WinDev
    Réponses: 0
    Dernier message: 01/11/2011, 22h14
  2. Les styles des éléments avant/après compilation
    Par Mysti¢ dans le forum wxPython
    Réponses: 2
    Dernier message: 14/06/2007, 17h07
  3. [Base de Registres]Comparer Avant-Aprés
    Par Jean_Benoit dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 21/06/2006, 20h14
  4. [CSS] Espace avant / après un <ul>
    Par Torpedox dans le forum Mise en page CSS
    Réponses: 7
    Dernier message: 10/01/2006, 21h34
  5. Boutons IE vs Firefox: espaces avant/après le texte
    Par dasdeb dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 07/09/2005, 19h29

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