使用lambdas作为Tornado回调

时间:2014-10-21 10:44:41

标签: python lambda tornado

有可能吗?我对Tornado(以及Python本身)很新,我认为我可以做类似的事情:

tornado.ioloop.IOLoop.instance().add_future(someFuture, lambda f: print f.result())

我只是语法错误。我认为函数定义和lambdas或多或少是等价的(都有类型function)。这很好用:

def printFuture(f):
    print f.result()

tornado.ioloop.IOLoop.instance().add_future(someFuture, printFuture)

我也可以在lambda中调用printFuture方法:

def printFuture(f):
    print f.result()

tornado.ioloop.IOLoop.instance().add_future(someFuture, lambda f: printFuture(f))

有人能解释我为什么吗?

1 个答案:

答案 0 :(得分:0)

在Python2中print是一个声明。 lambda只能是一个表达式

您可以使用

from __future__ import print_function

获取print

的函数版本

然后只需添加()

tornado.ioloop.IOLoop.instance().add_future(someFuture, lambda f: print(f.result()))