Return VS Yield в Python — короткий комикс

May 05 2023
# Почему yield может ускорить ваш код на Python
И эта проблема усугубляется по мере того, как мы имеем дело с большим объемом данных. А если в очереди 1000 человек? Ключевое слово return Ключевое слово yield Подобно ключевому слову return, ключевое слово yield обозначает результат работы функции.

И эта проблема усугубляется по мере того, как мы имеем дело с большим объемом данных. А если в очереди 1000 человек?

Ключевое слово «возврат»

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

Ключевое слово «доходность»

Как и returnключевое слово, yieldключевое слово означает вывод функции.

Однако, в отличие от returnключевого слова, одна функция может иметь yieldнесколько выходов. Ключевое yieldслово не останавливает всю функцию после запуска.

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

Допустим, у нас 10000 покупателей в нашем тако стенде (вместо 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}'

Для yield_stallфункции каждый заказ передается (отдается клиенту) сразу после его обработки. Первому парню просто нужно дождаться окончания своего и только его заказа.

Заключение

Если вы имеете дело со значительным объемом данных, рассмотрите возможность использования функции генератора (функции, которая использует yield), чтобы ускорить процесс. Надеюсь, это было понятно и полезно!

Несколько заключительных слов

Если эта история была полезной, и вы хотите оказать небольшую поддержку, вы можете:

  1. Хлопните 50 раз за эту историю (это действительно очень помогает мне)
  2. Подпишитесь на членство в Medium, используя мою ссылку (5 долларов в месяц, чтобы читать неограниченное количество историй на Medium)

Повышение уровня кодирования

Спасибо, что являетесь частью нашего сообщества! Перед тем, как ты уйдешь:

  • Хлопайте за историю и подписывайтесь на автора
  • Смотрите больше контента в публикации Level Up Coding
  • Бесплатный курс собеседования по программированию ⇒ Посмотреть курс
  • Подписывайтесь на нас: Твиттер | Линкедин | Новостная рассылка