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 :

A quoi sert is ?


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 60
    Par défaut A quoi sert is ?
    La documentation indique que l'on ne peut pas choisir pour nom d'une variable le nom is car c'est un mot réservé.

    A quoi sert ce is ? Est-ce une fonction, un opérateur, une instruction ?
    On ne peut pas utiliser google pour faire les recherches car son moteur néglige systématiquement les mots-clés trop courts !

  2. #2
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    "is" est un statement, c'est un peu une sorte d'équivalent de "==", mais plus pointilleux. Le seul exemple qui me vient en tête est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> 2==2
    True
    >>> 2 is 2
    True
    >>> 2==2.0
    True
    >>> 2 is 2.0
    False
    quant au mots clés trop court sur google, il suffit de rajouter un + devant le dit mot

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    159
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 159
    Par défaut
    C'est en fait un opérateur "d'identité", qui regarde si deux objets adressent la même zone mémoire.
    Ça prend tout son sens pour les objets mutables, comme les listes.
    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
    Python 2.6.4 (r264:75706, Oct 27 2009, 06:16:59) 
    [GCC 4.4.1] on linux2
    Type "help", "copyright", "credits" or "license" for more information.
    >>> l1 = range(0,5)
    >>> l1
    [0, 1, 2, 3, 4]
    >>> l2 = range(0,5)
    >>> l2
    [0, 1, 2, 3, 4]
    >>> l1 == l2
    True
    >>> l1 is l2
    False
    >>> l1 = l2
    >>> l1 is l2
    True
    >>>
    Cet opérateur peut-être combiné à "not" pour donner "is not".

    Pour les types non mutables, comme deux simples entier, ça ne marche plus vraiment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    >>> a = 3
    >>> b = 3
    >>> b is a
    True
    >>>
    Je suppose que python, lorsqu'on crée une variable d'un type non mutable, va chercher à référencer une zone mémoire contenant la même valeur. Ce n'est pas dangereux puisque le type étant non mutable, la vlaeur contenue à cet adresse ne peut être changée. Mais ce point mérite confirmation, en fait je ne sais pas trop...

  4. #4
    Membre émérite
    Homme Profil pro
    heu...
    Inscrit en
    Octobre 2007
    Messages
    648
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : heu...

    Informations forums :
    Inscription : Octobre 2007
    Messages : 648
    Par défaut
    ahhhh... donc en fait,"is" est équivalent à "id(obj) == id(obj)"
    Et pour ta réflexion sur le type non mutable, une vérification avec "id()" tend à confirmer tes dires.

  5. #5
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    comme souvent l'aide de python permet de trouver:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    The operators ``is`` and ``is not`` test for object identity: ``x is
    y`` is true if and only if *x* and *y* are the same object.  ``x is
    not y`` yields the inverse truth value.

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

Discussions similaires

  1. A quoi sert XML-Schema
    Par Community Management dans le forum Valider
    Réponses: 20
    Dernier message: 26/01/2009, 09h52
  2. à quoi sert le délestage?
    Par r0d dans le forum Mode d'emploi & aide aux nouveaux
    Réponses: 5
    Dernier message: 06/10/2004, 14h34
  3. a quoi sert le schema dans postgres ??
    Par champion dans le forum PostgreSQL
    Réponses: 6
    Dernier message: 13/09/2004, 10h25
  4. [info] A quoi sert ImageObserver ?
    Par FrigoAcide dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 22/03/2004, 17h20

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