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 :

Intérêt de 1 << 1 au lieu de 2 (int) ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut Intérêt de 1 << 1 au lieu de 2 (int) ?
    Bonjour,

    Voici un bout de code qui me laisse perplexe, ou du moins qui me laisse l'impression de passer à coté de quelque chose:

    Source: Tix.py
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    # Some constants used by Tkinter dooneevent()
    TCL_DONT_WAIT     = 1 << 1
    TCL_WINDOW_EVENTS = 1 << 2
    TCL_FILE_EVENTS   = 1 << 3
    TCL_TIMER_EVENTS  = 1 << 4
    TCL_IDLE_EVENTS   = 1 << 5
    TCL_ALL_EVENTS    = 0
    Quel en est l’intérêt par rapport à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    TCL_DONT_WAIT     = 2
    TCL_WINDOW_EVENTS = 4
    TCL_FILE_EVENTS   = 8
    ...
    ?

    @+

  2. #2
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour PauseKawa,

    Ça donne le même résultat, mais à mon avis, quand on veut positionner un bit à une place précise, la 1ère solution est un peu plus lisible:

    1<<3 ==> 00001000

    plutôt que:

    8 ==> 00001000

  3. #3
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Bonjour tyrtamos,

    Je m'attendez bien à une réponse dans ce sens.
    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
    >>> import dis
    >>> def wint():
    ...     TCL_DONT_WAIT = 2
    ... 
    >>> dis.dis(wint)
      2           0 LOAD_CONST               1 (2)
                  3 STORE_FAST               0 (TCL_DONT_WAIT)
                  6 LOAD_CONST               0 (None)
                  9 RETURN_VALUE        
    >>> def woutint():
    ...     TCL_DONT_WAIT = 1 << 1
    ... 
    >>> dis.dis(woutint)
      2           0 LOAD_CONST               2 (2)
                  3 STORE_FAST               0 (TCL_DONT_WAIT)
                  6 LOAD_CONST               0 (None)
                  9 RETURN_VALUE
    Mais quel intérêt à partir du moment ou le code a été interprété (2) ?

    la 1ère solution est un peu plus lisible:

    1<<3 ==> 00001000

    plutôt que:

    8 ==> 00001000
    Pas pour moi... Un exemple ? Merci d'avance.

    @+

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Pour moi, la lisibilité un peu plus grande n'existe que pour le développeur qui écrit le script.

    Mais ça dépend peut-être des personnes? En tout cas, moi, j'utilise souvent cette présentation.

  5. #5
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Mon avis c'est que c'est ceci que je n'arrive pas à cerner:
    Citation Envoyé par tyrtamos Voir le message
    mais à mon avis, quand on veut positionner un bit à une place précise, la 1ère solution est un peu plus lisible
    Citation Envoyé par tyrtamos Voir le message
    Pour moi, la lisibilité un peu plus grande n'existe que pour le développeur qui écrit le script.
    Je ne serais pas contre une explication plus détaillée car je ne comprend pas ( courge attitude du weekend) ceci:
    la 1ère solution est un peu plus lisible:

    1<<3 ==> 00001000

    plutôt que:

    8 ==> 00001000

  6. #6
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    J'ai un octet D qui contient 8 drapeaux (levé/baissé ou vrai/faux ou 1/0) appelés D0 à D7. Le drapeau D3 est positionné au 4ème bit en partant de la droite. Quand je lui donne une valeur, je comprend mieux:

    D3 = 1<<3

    que

    D3 = 8

    Les 2 donnant le même résultat: 00001000 = 8

    On peut ensuite combiner les drapeaux pour une application donnée:

    - avoir en même temps D3 et D4: D = D3 | D4
    - ajouter le drapeau D5 au D précédent: D = D | D5
    - mettre le bit correspondant à D4 à zéro: D = D & ~D4
    - etc...

    Ok?

  7. #7
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par tyrtamos Voir le message
    Ok?
    Pour ce qui est du décalage binaire oui bien sur.

    En fait en relisant
    Citation Envoyé par mont29 Voir le message
    (ou pire, étendre un ensemble défini par quelqu’un d’autre)
    Je me dit que je suis passé à coté de
    # Some constants used by Tkinter dooneevent()
    Si dooneevent() utilise les opérateurs binaires (&, |, ^, ~, », «) il semble "évident/naturel" d'écrire 1<<3 plutôt que 8: Cela reste dans l'"esprit".

    Pour toute autre écriture je doute encore de l'utilité de la chose.

    Merci pour vos réponses

  8. #8
    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
    Hello tout le monde,

    En effet aucun intérêt de montrer cette représentation comme le dis PauseKawa.

    Le seul intérêt que pourrait avoir l'auteur (mais je ne sais pas pourquoi), est peut-être de montrer la différence de décalage de bits entre chaque constante.

    Il est possible que se soit pour montrer une certaine logique de réflexion dans son code, ce qui permet de le rendre plus maintenable, si il y a un bug et qu'il pourrait être résolu par une tierce personne.

    Mais tout ça reste des suppositions

  9. #9
    Membre Expert Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Par défaut
    Citation Envoyé par PauseKawa Voir le message
    Si dooneevent() utilise les opérateurs binaires
    Tcl_DoOneEvent
    int flags (in)
    This parameter is normally zero. It may be an OR-ed combination of any of the following flag bits: TCL_WINDOW_EVENTS, TCL_FILE_EVENTS, TCL_TIMER_EVENTS, TCL_IDLE_EVENTS, TCL_ALL_EVENTS, or TCL_DONT_WAIT.
    Résolu et encore merci

  10. #10
    Membre Expert

    Homme Profil pro
    Diverses et multiples
    Inscrit en
    Mai 2008
    Messages
    662
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Diverses et multiples

    Informations forums :
    Inscription : Mai 2008
    Messages : 662
    Par défaut
    Je suis d’accord avec Tyrtamos. Il n’y a aucun intérêt du point de vue du programme lui-même, de ses fonctionnalités. Par contre, pour celui qui doit écrire un ensemble de bit flags (ou pire, étendre un ensemble défini par quelqu’un d’autre), c’est un plus indiscutable.

    Cette opération permet de matérialiser quel bit on utilise. Si pour les premiers, tout programmeur normalement constitué est capable de savoir que 4 correspond au troisième bit, je ne pense pas qu’il y en ait beaucoup qui soient capables de citer instantanément le bit correspondant à la valeur 2097152*? Dans ce cas, 1 << 21 est nettement plus parlant.

    Et on risque moins la faute de frappe*! Sinon, gare aux flags qui se répandent chez les copains.

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

Discussions similaires

  1. [TDataModule] Intérêt de séparer les accès aux données?
    Par Cornell dans le forum Bases de données
    Réponses: 5
    Dernier message: 05/09/2003, 16h42
  2. [TOMCAT] affichage arborescence au lieu d'éxécuter la servle
    Par lombra dans le forum Tomcat et TomEE
    Réponses: 4
    Dernier message: 13/08/2003, 13h30
  3. Quel est l'intérêt des Services Web ??
    Par silvermoon dans le forum Débats sur le développement - Le Best Of
    Réponses: 19
    Dernier message: 12/02/2003, 22h28
  4. [Concept] BD ou Gestion par fichier. Intérêt de la BD ?
    Par Cian dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 28/11/2002, 12h16
  5. [Technique] Intérêt des index
    Par ddams dans le forum Décisions SGBD
    Réponses: 10
    Dernier message: 04/11/2002, 15h11

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