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 :

objet - python


Sujet :

Python

  1. #1
    Membre éclairé

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Billets dans le blog
    1
    Par défaut objet - python
    Bonjour à tous,

    Je suis débutante en python
    j'ai remarqué que quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    x=2
    y=2
    id(x);id(y)

    python crée un seul et unique objet

    par contre dés que la valeur dépasse 256 ou pour un objet de type complex
    python crée deux objets différents.

    je voudrai votre confirmation sur ça ou est-ce que j'ai mal compris le fonctionnement et explication si c'est possible.
    merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 306
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 306
    Par défaut
    Salut,

    Lorsque tu fais x = 2 tu crées un entier avec la valeur 2 mais tu ne crées pas l'objet x.

    x n'est qu'une étiquette collée sur cet entier et c'est pour cela que l'on dit souvent qu'il n'y a pas de variable en Python, uniquement des noms ou références.

    Par soucis d'économie (euphémisme de fainéantise) si tu recrées un autre entier identique, Python ne construit qu'une deuxième étiquette et la colle sur le précédent objet.

    Maintenant, pourquoi ce comportement s'arrête-t-il au delà de 256 ? Et bien je l'ignore. Je ne l'avais jamais remarqué non plus.

  3. #3
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 704
    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 704
    Par défaut
    Salut,

    C'est un comportement documenté:

    PyObject* PyLong_FromLong(long v)
    Return value: New reference.

    Return a new PyLongObject object from v, or NULL on failure.

    The current implementation keeps an array of integer objects for all integers between -5 and 256, when you create an int in that range you actually just get back a reference to the existing object. So it should be possible to change the value of 1. I suspect the behaviour of Python in this case is undefined. :-)
    L'idée étant d'éviter de créer trop d'objets dans ces cas très usités, histoire d'économiser de la mémoire, sachant que ces objets là sont "immutables".

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

  4. #4
    Membre éclairé

    Inscrit en
    Août 2007
    Messages
    308
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 308
    Billets dans le blog
    1
    Par défaut
    merci pour vos réponses

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 11/04/2015, 13h59
  2. string json to objet python
    Par lenoil dans le forum Général Python
    Réponses: 4
    Dernier message: 15/11/2012, 10h45
  3. import dans les script python (objet zope)
    Par cronos6 dans le forum Zope
    Réponses: 5
    Dernier message: 10/09/2006, 14h47
  4. [Zope/Python] Acquerir un objet
    Par HexChit dans le forum Zope
    Réponses: 10
    Dernier message: 24/07/2006, 09h47
  5. approche objet en python...associer des classes.
    Par preacher_man dans le forum Général Python
    Réponses: 9
    Dernier message: 06/01/2006, 15h21

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