"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Quelle est l'application pratique et la fonctionnalité de Yield from Syntax dans Python 3.3 ?

Quelle est l'application pratique et la fonctionnalité de Yield from Syntax dans Python 3.3 ?

Publié le 2024-11-08
Parcourir:771

What is the Practical Application and Functionality of Yield from Syntax in Python 3.3?

Applications pratiques de la syntaxe Yield From dans Python 3.3

Établissement d'un échange de données transparent

La syntaxe Yield From établit une connexion directe entre l'appelant et le sous-générateur, permettant aux données de circuler de manière transparente entre eux. Contrairement aux boucles for traditionnelles, qui ne peuvent produire que des valeurs, rendement from fournit un canal bidirectionnel. Cela revient à établir une connexion temporaire entre les sockets client, permettant à la fois la réception et l'envoi de données.

Exemple : Lecture de données à partir d'un générateur

def reader():
    "Simulates reading data from a source"
    for i in range(4):
        yield f"

En utilisant le rendement de, nous pouvons parcourir le générateur de lecteur sans gérer manuellement la boucle.

Exemple : envoi de données à un coroutine

def writer():
    "Simulates writing data to a destination"
    while True:
        w = (yield)
        print(f">>> {w}")

writer_wrapper = writer_wrapper(writer())

for i in range(4):
    wrap.send(i)  # Output: >>> 0, >>> 1, >>> 2, >>> 3

Dans cet exemple, la syntaxe rendement de permet à la fonction wrapper d'envoyer des données à la coroutinewriter(), établissant un échange direct de données.

Exception Handling

Yield from gère également la propagation des erreurs de manière transparente. Si le sous-générateur rencontre une exception, celle-ci peut être soit déclenchée à nouveau par l'appelant, soit gérée au sein du sous-générateur.

Exemple : Gestion des exceptions avec SpamException

class SpamException(Exception):
    pass

def writer():
    while True:
        try:
            w = (yield)
        except SpamException:
            print("***")
        else:
            print(f">>> {w}")

writer_wrapper = writer_wrapper(writer())

# Raising an exception within the wrapper
wrap.throw(SpamException)

# Expected Output: ***

Yield from garantit que les exceptions se propagent en douceur, sans qu'il soit nécessaire de gérer manuellement les exceptions dans la fonction wrapper.

Conclusion

Yield from est une syntaxe puissante qui simplifie la mise en œuvre de l'échange de données bidirectionnel entre l'appelant et les sous-générateurs, en gérant les exceptions de manière transparente. Il fournit un moyen transparent et efficace de communiquer entre ces composants, ce qui en fait un outil précieux pour gérer des scénarios de traitement de données complexes dans Python 3.3 et versions ultérieures.

Déclaration de sortie Cet article est réimprimé à l'adresse : 1729682270. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3