Return VS Yield w Pythonie — krótki komiks
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 return
słowo kluczowe, yield
słowo kluczowe oznacza wynik działania funkcji.
Jednak w przeciwieństwie do return
słowa kluczowego jedna funkcja może wyświetlać yield
wiele danych wyjściowych. Słowo yield
kluczowe 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_stall
funkcji 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:
- Klaśnij 50 razy za tę historię (to naprawdę bardzo mi pomaga)
- 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