Автор оригинала: Pankaj Kumar.
Мы будем смотреть в генератор Python сегодня. В нашем предыдущем уроке мы узнали о питоном итераторе.
Генератор Python
Генератор Python является одним из самых полезных и специальных функций Python. Мы можем повернуть функцию вести себя как итератор, используя генераторы Python.
Основная структура генератора Python
В основном Python Generator является функцией. Вы можете рассмотреть следующую как основную структуру генератора Python.
#sample syntax of python generator def gereratorName(argument): #statements yield argument #statements #calling the generator variableName = gereratorName(10) print(variableName)
В приведенной выше структуре вы можете видеть, что все похоже на функцию, кроме одного, то есть доходность ключевое слово. Это ключевое слово играет жизненно важную роль. Только использование доходность , изменяет нормальную функцию в генератор.
Нормальная функция возвращает некоторое значение, генератор Урожайность некоторое значение. Генератор автоматически реализует Далее ()
и _ITER_
Отказ
Генератор Python написан как обычные функции, но используйте оператор текучести всякий раз, когда они хотят вернуть некоторые данные. Каждый раз, когда следующий () вызывается функцией генератора, генератор возобновляется там, где он остановился (он вспоминает все значения данных, и какое утверждение было последним выполненным).
Понимание генератора Python
Давайте теперь узнаем каждую строку предыдущего кода.
Линия 2 , это декларация генератора, который принимает аргумент. Этот аргумент является необязательным. Это зависит от программиста, который будет реализовывать генератор.
Линия 3, 5 упоминания могут быть некоторые другие заявления.
Линия 4 является решающей частью вышеуказанной программы. Это говорит о доходность
Значение аргумента на основе некоторых условий, которые могут быть указаны в заявлениях.
И линия 8 Вызывает генератор с параметром 10 и строка 9 печатает возвращенный объект генератора. Если вы запустите вышеуказанную программу, то она будет выводиться в следующем,
Обратите внимание, что вышеуказанный выход не является значением. На самом деле это указывает, где объект. Чтобы получить фактическое значение, которое вы получите помощь итератора. Затем неявно следующий () будет вызываться на объекте, чтобы получить следующее значение, которое получает.
Если вы хотите распечатать сгенерированные значения без петли, вы можете использовать следующую () функцию на нем. Если вы добавите еще одну строку в вышеуказанном коде, как ниже.
print(next(variableName))
Затем он выводится значение 10, которое было передано как аргумент и дает.
Получите значение Python Generator с явным следующим () вызовом
Теперь посмотрите на следующую программу, где мы явно называем следующую () функцию генератора.
#fruits is a generator which generates some fruit name def fruits(): yield "Mango" yield "Jackfruit" yield "Banana" yield "Guava" #calling the generator fruit getfruits = fruits() print(next(getfruits)) print(next(getfruits)) print(next(getfruits)) print(next(getfruits))
В приведенном выше коде вы должны знать точное количество значений, которые были получены. В противном случае вы получите некоторую ошибку, так как больше не генерируется ценность от фруктов генератора функции ().
Приведенный выше код будет выведен следующим образом:
Mango Jackfruit Banana Guava
Получить значение Generator Python с Implicit Next () Call
Вы можете получить значения генератора, используя для цикла. Следующая программа отображается, как вы можете распечатать значения, используя для петли и генератора. Это обеспечит тот же выход.
#fruits is a generator which generates some fruit name def fruits(): yield "Mango" yield "Jackfruit" yield "Banana" yield "Guava" #calling the generator fruit getfruits = fruits() for a in getfruits: print(a)
Рабочая процедура Python Generator
Давайте теперь посмотрим, как генератор на самом деле работает. Нормальная функция завершается после оператора возврата, но генератор не делает.
Впервые мы вызываем функцию, она возвращает первое значение, которое дает итератор. В следующий раз, когда мы называем генератор, то он возобновляется, откуда он был приостановлен раньше.
Все значения не возвращаются одновременно из генератора в отличие от обычной функции. Это специальность генератора. Он генерирует значения, вызывая функцию снова и снова, которая требует меньше памяти, когда мы создаем огромное количество значений.
Угадайте вывод ниже программы генератора Python
Давайте посмотрим другой код. Если вы можете взять на себя вывод, то это усиление.
def timesTable(number): for i in range(1, 11): yield i * number i += 1 gettimes = timesTable(10) for a in gettimes: print(a)
Выход будет:
Помните Диапазон ()
это встроенный генератор, который генерирует номер в верхней границе. Надеюсь, вы теперь можете написать свой собственный генератор. Удачи.
Ссылка: Python API Doc.