Return VS Yield w Pythonie — krótki komiks

May 05 2023
# Dlaczego „yield” może przyspieszyć Twój kod Pythona
A ten problem pogarsza się, im więcej danych mamy do czynienia. A co jeśli w kolejce jest 1000 osób? Słowo kluczowe „return” Słowo kluczowe „yield” Podobnie jak słowo kluczowe return, słowo kluczowe yield oznacza wynik działania funkcji.

A ten problem pogarsza się, im więcej danych mamy do czynienia. A co jeśli w kolejce jest 1000 osób?

Słowo kluczowe „powrót”.

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']

Słowo kluczowe „zysk”.

Podobnie jak returnsłowo kluczowe, yieldsłowo kluczowe oznacza wynik działania funkcji.

Jednak w przeciwieństwie do returnsłowa kluczowego jedna funkcja może wyświetlać yieldwiele danych wyjściowych. Słowo yieldkluczowe nie zatrzymuje całej funkcji po uruchomieniu.

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

Załóżmy, że mamy 10 000 klientów na naszym stoisku tako (zamiast tylko 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}'

Dla tej yield_stallfunkcji każde zamówienie jest realizowane (wydawane klientowi) zaraz po ich przetworzeniu. Pierwszy facet musi tylko poczekać, aż jego i tylko jego zamówienie się skończy.

Wniosek

Jeśli masz do czynienia ze znaczną ilością danych, rozważ użycie funkcji generatora (funkcji, która używa yield), aby przyspieszyć działanie. Mam nadzieję, że było to jasne i pomocne!

Kilka ostatnich słów

Jeśli ta historia była wartościowa i chcesz okazać trochę wsparcia, możesz:

  1. Klaśnij 50 razy za tę historię (to naprawdę bardzo mi pomaga)
  2. Zarejestruj się, aby uzyskać członkostwo Medium, korzystając z mojego linku (5 USD miesięcznie, aby czytać nieograniczone historie Medium)

Kodowanie na wyższym poziomie

Dziękujemy za bycie częścią naszej społeczności! Zanim pójdziesz:

  • Klaskajcie za relację i śledźcie autora
  • Zobacz więcej treści w publikacji Level Up Coding
  • Bezpłatny kurs rozmowy o kodowaniu ⇒ Zobacz kurs
  • Śledź nas: Twitter | LinkedIn | Biuletyn