From a quick glance, it looks like you're converting from coroutines back to callbacks just so you can partially hide the callbacks. Why not just stick with coroutines? Compare: ping("http://baidu.com") | r -> print(r.result()) print("something else") r = await ping("http://baidu.com") print(r.result()) print("something else") And this doesn't require a new operator, or multiline lambdas, or a new operator that does its thing and also introduces a multiline lambda, or anything else. Sent from my iPhone
On Sep 28, 2015, at 23:31, 张沈鹏 <375956667@qq.com> wrote:
# The example works with tornado dev verison & python3.5
import tornado from tornado.httpclient import AsyncHTTPClient from tornado.concurrent import Future from tornado.gen import convert_yielded from functools import wraps
Future.__or__ = Future.add_done_callback
def future(func): @wraps(func) def _(*args, **kwds): return convert_yielded(func(*args, **kwds)) return _
##############
@future async def ping(url): httpclient = AsyncHTTPClient() r = await httpclient.fetch(url) return r.body.decode('utf-8')
ping("http://baidu.com") | ( lambda r:print(r.result()) )
"""
Maybe python should support arrow syntax for easier use async call ?
Now lambda only can write one line and must have parentheses ...
FOR EXAMPLE
ping("http://baidu.com") | r -> print(r.result()) print("something else")
I saw some discuss in https://wiki.python.org/moin/AlternateLambdaSyntax """
tornado.ioloop.IOLoop.instance().start() _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/