On 2015-06-26 1:40 PM, Ethan Furman wrote:
> On 06/26/2015 08:47 AM, Steve Dower wrote:>> On 06/26/2015 06:48 AM, Sven R. Kunze wrote:>>>>> def business():>>> return complex_calc(5)>>>>>> def business_new()>>> return await complex_calc(10)>>> Assuming "async def business_new" (to avoid the syntax error), >> there's no difference between those functions or the one they're >> calling:>>>> * "complex_calc" returns an awaitable object that, after you've >> awaited it, will result in an int.>> * "business" returns the return value of "complex_calc", which is an >> awaitable object that, after you've awaited it, will result in an int.>> * "business_new" returns an awaitable object that, after you've >> awaited it, will result in an int.>>>> In all three of these cases, the result is the same. The fact that >> the awaitable object returned from any of them is implemented by a >> coroutine isn't important (in the same way that an iterable object >> may be implemented by a generator, but it's really irrelevant).>> What? Shouldn't 'business_new' return the int? It did await, after all.
"business_new" should be defined with an 'async' keyword, that's where
all the confusion came from:
async def business_new():
return await complex_calc(10)
Now, "business_new()" returns a coroutine (which will resolve to the
result of "complex_calc" awaitable), "await business_new()" will return
an int.
Yury
_______________________________________________
Python-Dev mailing list
Pyth...@python.org
https://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: https://mail.python.org/mailman/options/python-dev/python-dev-ml%40activestate.com