Return VS Yield en Python - Une courte bande dessinée

May 05 2023
# Pourquoi 'yield' peut rendre votre code Python plus rapide
Et ce problème s'aggrave au fur et à mesure que nous traitons de données. Et s'il y a 1000 personnes dans la file ? Le mot-clé 'return' Le mot-clé 'yield' Comme le mot-clé return, le mot-clé yield signifie la sortie d'une fonction.

Et ce problème s'aggrave au fur et à mesure que nous traitons de données. Et s'il y a 1000 personnes dans la file ?

Le mot-clé 'retour'

def add10(x):
  return x

x = add10(4)        # x = 14
def get_takoballs(orders):
  output = []
  for order in orders:
    output.append(f'{order} takoballs')
  return output

y = get_takoballs([4,6,8])
# y = ['4 takoballs', '6 takoballs', '8 takoballs']

Le mot-clé "rendement"

Comme le returnmot-clé, le yieldmot-clé signifie la sortie d'une fonction.

Cependant, contrairement au returnmot-clé, une fonction peut générer yieldplusieurs sorties. Le yieldmot-clé n'arrête pas toute la fonction après son exécution.

def testfunction():
  yield 4
  yield 5
  yield 6

for n in testfunction():
  print(n)

# 4
# 5
# 6
def get_takoballs(orders):
  for order in orders:
    yield f'{order} takoballs'

for food in get_takoballs([4, 6, 8]):
  print(food)

# 4 takoballs
# 6 takoballs
# 8 takoballs

Disons que nous avons 10000 clients dans notre stand tako (au lieu de seulement 3).

orders = # a list containing 10000 orders

def return_stall(orders):
  # process all 10000 orders first
  # then output all 10000 processed orders
  output = []
  for order in order:
    output.append(f'{order} takoballs')
  return output

def yield_stall(orders):
  # process 1 order, then output it
  # repeat til all 10000 orders are completed
  for order in orders:
    yield f'{order takoballs}'

Pour la yield_stallfonction, chaque commande est cédée (remise au client) dès qu'elle est traitée. Le premier gars n'a plus qu'à attendre que sa commande soit terminée.

Conclusion

Si vous traitez une quantité importante de données, envisagez d'utiliser une fonction de générateur (une fonction qui utilise yield) pour accélérer les choses. J'espère que c'était clair et utile !

Quelques mots de conclusion

Si cette histoire a apporté de la valeur et que vous souhaitez montrer un peu de soutien, vous pouvez :

  1. Applaudissez 50 fois pour cette histoire (ça m'aide vraiment, vraiment)
  2. Inscrivez-vous à un abonnement Medium en utilisant mon lien (5 $/mois pour lire un nombre illimité d'histoires Medium)

Codage de niveau supérieur

Merci de faire partie de notre communauté ! Avant que tu partes:

  • Applaudissez pour l'histoire et suivez l'auteur
  • Voir plus de contenu dans la publication Level Up Coding
  • Cours d'entretien de codage gratuit ⇒ Voir le cours
  • Suivez-nous : Twitter | LinkedIn | Bulletin