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 :

la commande yield de python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Par défaut la commande yield de python
    Bonjour à tous,
    J'essaye de comprendre l'utilité de la commande yield de python pour cela j'ai cherché sur pas mal de page web mais malheureusement j'ai pas bien compris sa philosophie (generator iterator etc ...)
    J'espère trouver quelqu'un qui pourrait m'expliquer en detail le fonctionnement de cette commande.

    Merccccccccci



  2. #2
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    ca permet de créer un iterateur

    en gros tu fais la meme chose que ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    def entiers():
        entiers = []
        for nb in range(10):
            entiers += nb
        return entiers
     
    def entiers():
        for nb in range(10):
            yield nb
     
    for integer in entiers():
    [...]
    c'est plus propre mais surtout c'est optimisé car il te créer les élément un par un au lieu de les stocker tous dans une liste

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Par défaut merci
    merci
    chapeau

  4. #4
    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 Deux exemples d'utilisation de l'instruction field :
    Généralement l'usage de l'instruction field est lié à un itérateur qui est "déclenché" par des appels successifs d'une méthode .next() :

    Voici deux exemples (que j'ai trouvés sur le net) :
    - Premier exemple (voir http://blog.site2wouf.fr/2008/04/pyt...-de-yield.html), celui du feu tricolore des croisements routiers :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def CouleurIterateur ():
        while 1:        # Une boucle infinie !
            for i in ('Vert','Orange','Rouge'):
                yield i # A chaque instruction yield rencontrée, l’exécution de la
                        # boucle for s'arrête ; mais elle reprend au prochain appel
                        # de la méthode .next()
    couleur=CouleurIterateur() pour l'objet couleur
    for i in range(50) :
        print couleur.next(),
    écrit :

    Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange Rouge Vert Orange

    - Second exemple (voir "http://fr.wikipedia.org/wiki/Python_...e)#Générateurs"), celui de la célèbre suite mathématique de Fibonacci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def gen_fibonacci():
        """Générateur de la suite de Fibonacci"""
        a, b = 0, 1
        while True:
            yield a  # Renvoi de la valeur de "a", résultat de l'itération en cours
            a, b = b, a + b
    fi = gen_fibonacci()
    for i in range(50):
        print fi.next(),
    écrit :

    0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 10946 17711 28657 46368 75025 121393 196418 317811 514229 832040 1346269 2178309 3524578 5702887 9227465 14930352 24157817 39088169 63245986 102334155 165580141 267914296 433494437 701408733 1134903170 1836311903 2971215073 4807526976 7778742049

    J'espère que ces 2 exemples éclaireront le lecteur ...

    Papy_77

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Par défaut
    Bonjour,

    Merci papy_77 pour l'éclaircissement, toutefois, il y t-il un similaire de cette commande dans un autre langage comme java ou c?


    Merci de nouveau.

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

Discussions similaires

  1. commande bash depuis python
    Par Djibrilou dans le forum Interfaçage autre langage
    Réponses: 5
    Dernier message: 03/10/2013, 21h47
  2. exécuter command dos via python
    Par goenitz dans le forum Général Python
    Réponses: 3
    Dernier message: 02/10/2010, 17h09
  3. problème dans l'appel d'une commande Linux dans python
    Par ghadroud dans le forum Général Python
    Réponses: 25
    Dernier message: 20/04/2009, 14h55
  4. Peut on mettre une commande linux avec python
    Par specimen35 dans le forum Général Python
    Réponses: 2
    Dernier message: 20/12/2007, 16h06
  5. Masquer une commande système dans python
    Par Mysti¢ dans le forum Général Python
    Réponses: 5
    Dernier message: 03/11/2006, 16h33

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