Return VS Yield in Python: un breve fumetto
E questo problema peggiora quanto più dati trattiamo. E se ci sono 1000 persone in fila?
La parola chiave 'ritorno'
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']
La parola chiave 'rendimento'
Come la returnparola chiave, la yieldparola chiave indica l'output di una funzione.
Tuttavia, a differenza della returnparola chiave, una funzione può yieldgenerare più output. La yieldparola chiave non arresta l'intera funzione dopo l'esecuzione.
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
Diciamo che abbiamo 10000 clienti nel nostro stand tako (invece di solo 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}'
Per la yield_stallfunzione, ogni ordine viene ceduto (consegnato al cliente) non appena viene evaso. Il primo ragazzo deve solo aspettare che il suo e solo il suo ordine finisca.
Conclusione
Se hai a che fare con una quantità considerevole di dati, considera l'utilizzo di una funzione generatore (una funzione che utilizza yield) per velocizzare le cose. Spero di essere stato chiaro e utile!
Alcune parole finali
Se questa storia ha fornito valore e desideri mostrare un piccolo supporto, potresti:
- Batti le mani 50 volte per questa storia (questo mi aiuta davvero tanto)
- Iscriviti per un abbonamento Medium usando il mio link ($ 5/mese per leggere storie Medium illimitate)
Codifica di livello superiore
Grazie per far parte della nostra comunità! Prima che tu vada:
- Batti le mani per la storia e segui l'autore
- Visualizza altri contenuti nella pubblicazione Level Up Coding
- Corso di colloquio di codifica gratuito ⇒ Visualizza il corso
- Seguici: Twitter | Linkedin | Notiziario

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































