• [^] # Re: A quand l'équivalent des symboles Ruby en Python ?

    Posté par (site web personnel) . En réponse à la dépêche Python 3.4 est sorti avec 7 nouveaux modules. Évalué à 7.

    modulo les perfs peut-être

    Les symboles Ruby sont des chaînes rendues explicitement "intern"—existant de façon unique—via une syntaxe spéciale. En Python l'optimisation faite sur les chaînes courtes litérales réalise la même chose de façon automatique (réutilisation du même objet pour représenter la même chaîne - les chaînes Python étant immutables ça ne pose aucun problème).

    Et pour tout ce qui serait issu de saisie ou lecture fichier, un simple appel à sys.intern() réalise l'opération.

    >>> s1 = 'truc'
    >>> s2 = 'truc'
    >>> s1 is s2
    True

    Vérification en utilisant deux modules:

    #m1.py
    s1 = 'toto'
    #m2.py
    s2 = 'toto'

    Utilisation des modules.

    >>> import m1,m2
    >>> m1.s1
    'toto'
    >>> m2.s2
    'toto'
    >>> m1.s1 is m2.s2
    True
    # Si on utilise autre chose que des litérales, il faut explicitement appeler intern()
    >>> s3 = input()
    toto
    >>> s3 is m2.s2
    False
    >>> import sys
    >>> s4 = sys.intern(s3)
    >>> s4 is m2.s2
    True

    Votez les 30 juin et 7 juillet, en connaissance de cause. http://www.pointal.net/VotesDeputesRN