Рубрики
Без рубрики

Как цепить несколько звонков функций в Python?

Состав задачи Удалить ряд функций F1, F2, …, Fn. Как цепить вызовы функций, так что вывод I-й функции используется в качестве ввода для функции (i + 1) -th? F1 () —> Выходные данные F1 () – это вход F2 () —> Выход F2 () – это вход F3 () … —> … является вводом Fn () … как Цепочка несколько звонков функций в Python? Читать далее “

Автор оригинала: Chris.

Постановка проблемы

Учитывая ряд функций F1, F2, …, FN Отказ Как цепить функциональные вызовы, так что вывод Я -этакая функция используется в качестве ввода для (I + 1) -этакая функция?

f1()   ---> output f1() is input of f2()   ---> output f2() is input of f3() ...    ---> ... is input of fn()

Простое решение: цепочка

Вот самый Pythonic и простое решение проблемы функционирования цепочки:

def f1():
    return 'f1'


def f2(arg):
    return arg + ' f2'


def f3(arg):
    return arg + ' f3'


# Chain the outputs into the next functions
result = f3(f2(f1()))
print(result)
# f1 f2 f3
  • Вы определяете входные аргументы каждой функции в скобках.
  • Вы можете установить вход на любое имя и получить доступ к входу в корпусе функции с использованием имени аргумента. В нашем случае мы используем имя arg как имена входных аргументов.
  • Тогда вы используете внешнюю функцию F3 (...) Это последняя функция, которая должна быть выполнена. В качестве ввода вы используете результат F2 (...) Отказ В качестве ввода для этой функции вы используете результат F1 () Отказ Таким образом, вы можете цепи три или более функций, используя шаблон F3 (F2 (F1 ())) Отказ

Расширенное решение: Meta Pythonic для произвольного количества функционных цепей

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

def chain(start, *funcs):
    res = start
    for func in funcs:
        res = func(res)
    return res

цепь () Функция принимает начальное начало семян. Затем он проходит через все функции, переданные как аргументы и передают текущий результат в качестве ввода к функции. Затем он перезаписывает текущий результат с помощью функции выхода на выходе на выходе одной функции в входные аргументы следующей функции.

Теперь вы можете цепи одну функцию:

def increment(arg):
    return arg + 1


inc_1 = chain(0, increment)
print(inc_1)
# 1

Но вы также можете цепи 5 функций:

inc_5 = chain(0, increment, increment, increment, increment, increment)
print(inc_5)
# 5

Или даже 100 функций:

inc_100 = chain(0, *[increment] * 100)
print(inc_100)
# 100

Это так же, как увеличение (приращение (... увеличение (приращение (0)) ...)) Отказ

И вы также можете пройти разные типы функций:

chain(start, f1, f2, f3, ..., f100)

Предполагая, что вы определены или импортированные функции F1 к F100 в вашем коде.

Куда пойти отсюда?

Достаточно теории, давайте познакомимся!

Чтобы стать успешным в кодировке, вам нужно выйти туда и решать реальные проблемы для реальных людей. Вот как вы можете легко стать шестифункциональным тренером. И вот как вы польские навыки, которые вам действительно нужны на практике. В конце концов, что такое использование теории обучения, что никто никогда не нуждается?

Практические проекты – это то, как вы обостряете вашу пилу в кодировке!

Вы хотите стать мастером кода, сосредоточившись на практических кодовых проектах, которые фактически зарабатывают вам деньги и решают проблемы для людей?

Затем станьте питоном независимым разработчиком! Это лучший способ приближения к задаче улучшения ваших навыков Python – даже если вы являетесь полным новичком.

Присоединяйтесь к моему бесплатным вебинаре «Как создать свой навык высокого дохода Python» и посмотреть, как я вырос на моем кодированном бизнесе в Интернете и как вы можете, слишком от комфорта вашего собственного дома.

Присоединяйтесь к свободному вебинару сейчас!

Работая в качестве исследователя в распределенных системах, доктор Кристиан Майер нашел свою любовь к учению студентов компьютерных наук.

Чтобы помочь студентам достичь более высоких уровней успеха Python, он основал сайт программирования образования Finxter.com Отказ Он автор популярной книги программирования Python One-listers (Nostarch 2020), Coauthor of Кофе-брейк Python Серия самооставленных книг, энтузиаста компьютерных наук, Фрилансера и владелец одного из лучших 10 крупнейших Питон блоги по всему миру.

Его страсти пишут, чтение и кодирование. Но его величайшая страсть состоит в том, чтобы служить стремлению кодер через Finxter и помогать им повысить свои навыки. Вы можете присоединиться к его бесплатной академии электронной почты здесь.