Ответы пользователя по тегу Замыкания
  • Как реализовать цепочку callback'ов в python?

    stepank
    @stepank

    в питоне в качестве анонимных функций есть только lamba, на которые есть очень жесткие ограничения, например, что их тело может содержать только одно выражение, т.е. простым языком - внутри лямбды не может быть очень много логики. поэтому для более сложных конструкций нужно создавать именованые функции, например:

    some = "hello"
    def func_1():
        print some
        one_more = "world"
        def func_2():
            print some, one_more
            def func_3():
                print "hello world"
            return func_99("bla-bla", func_3)
        return func_100("bla-bla", func_2)

    есть различные варианты, как избежать большой вложенности, но это непосредственно к теме вопроса не относится. кроме того, если вы работаете с Twisted, то, конечно, нужно изучить Deferred, т.к. без них в этом фреймворке вообще никуда. насчет Tornado не знаю, вероятно, там есть какой-то похожий механизм. если вы не используете ни один из указанных фреймворков, то саму концепцию Deferred все равно есть смысл изучить, т.к. есть реализации не привязанные к этим фреймворкам, но с помощью Deferred работа с цепочками колбеков становится гораздо удобнее

    Ответ написан
    Комментировать