<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Thanks, Yury, for you quick response.<br>
    <br>
    <div class="moz-cite-prefix">On 24.06.2015 22:16, Yury Selivanov
      wrote:<br>
    </div>
    <blockquote cite="mid:558B1034.6080504@gmail.com" type="cite">Sven,
      if we don't have 'async def', and instead say that "a function is
      a *coroutine function* when it has at least one 'await'
      expression", then when you refactor "useful()" by removing the
      "await" from it, it stops being a *coroutine function*, which
      means that it won't return an *awaitable* anymore.  Hence the
      "await useful()" call in the "important()" function will be
      broken.<br>
    </blockquote>
    <br>
    I feared you would say that. Your reasoning assumes that <b>await</b>
    needs an <b>explicitly declared awaitable</b>.<br>
    <br>
    Let us assume for a moment, we had no async keyword. So, any
    awaitable needs to have at least 1 await in it. Why can we not have
    awaitables with 0 awaits in them?<br>
    <br>
    <blockquote cite="mid:558B1034.6080504@gmail.com" type="cite">
      <br>
      'async def' guarantees that function always return a "coroutine";
      it eliminates the need of using @asyncio.coroutine decorator (or
      similar), which besides making code easier to read, also improves
      the performance.  Not to mention new 'async for' and 'async with'
      statements.<br>
    </blockquote>
    <br>
    Recently, I read Guido's blog about the history of Python and how he
    eliminated special cases from Python step by step. As I see it, the
    same could be done here.<br>
    <br>
    What is the difference of a function (no awaits) or an awaitable
    (> 1 awaits) from an end-user's perspective (i.e. the
    programmer)?<br>
    <br>
    My answer would be: none. When used the same way, they should behave
    in the same manner. As long as, we get our nice tracebacks when
    something went wrong, everything seems find to me.<br>
    <br>
    <br>
    Please, correct me if I am wrong.<br>
    <br>
    <blockquote cite="mid:558B1034.6080504@gmail.com" type="cite">
      <br>
      This is also covered in the rationale section of the PEP [2]
      <br>
      <br>
      [1]
      <a class="moz-txt-link-freetext" href="https://www.python.org/dev/peps/pep-0492/#importance-of-async-keyword">https://www.python.org/dev/peps/pep-0492/#importance-of-async-keyword</a>
      <br>
      [2] <a class="moz-txt-link-freetext" href="https://www.python.org/dev/peps/pep-0492/#rationale-and-goals">https://www.python.org/dev/peps/pep-0492/#rationale-and-goals</a>
      <br>
      <br>
      Thanks,
      <br>
      Yury
      <br>
      <br>
      P.S. This and many other things were discussed at length on the
      mailing lists, I suggest you to browse through the archives.
      <br>
    </blockquote>
    <br>
    I can imagine that. As said I went through of some of them, but it
    could be that I missed some of them as well.<br>
    <br>
    Is there a way to search them through (by not using Google)?<br>
    <br>
    <br>
    Regard,<br>
    Sven<br>
  </body>
</html>