Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.python > #90165

Re: asyncio: What is the difference between tasks, futures, and coroutines?

Path csiph.com!usenet.pasdenom.info!news.redatomik.org!newsfeed.xs4all.nl!newsfeed1.news.xs4all.nl!xs4all!newsgate.cistron.nl!newsgate.news.xs4all.nl!post.news.xs4all.nl!not-for-mail
Return-Path <rosuav@gmail.com>
X-Original-To python-list@python.org
Delivered-To python-list@mail.python.org
X-Spam-Status OK 0.004
X-Spam-Evidence '*H*': 0.99; '*S*': 0.00; 'explicitly': 0.05; 'newbie': 0.05; 'compiler': 0.07; 'nested': 0.07; 'suppose': 0.07; '%s"': 0.09; 'raises': 0.09; 'runtime': 0.09; 'cc:addr:python- list': 0.11; 'python': 0.11; 'def': 0.12; '(code,': 0.16; 'clause.': 0.16; 'constructs': 0.16; 'from:addr:rosuav': 0.16; 'from:name:chris angelico': 0.16; 'none.': 0.16; 'subject:between': 0.16; 'subject:tasks': 0.16; 'tripped': 0.16; 'unexpected': 0.16; 'wrote:': 0.18; 'code.': 0.18; 'all,': 0.19; 'result.': 0.19; 'later': 0.20; 'cc:addr:python.org': 0.22; 'error': 0.23; 'byte': 0.24; "shouldn't": 0.24; 'skip:l 30': 0.24; '(or': 0.24; 'cc:2**0': 0.24; 'header:In-Reply-To:1': 0.27; 'function': 0.29; 'raise': 0.29; 'reporting': 0.29; "doesn't": 0.30; 'message-id:@mail.gmail.com': 0.30; 'code': 0.31; 'commonly': 0.31; 'fri,': 0.33; 'style': 0.33; 'subject:the': 0.34; 'could': 0.34; 'but': 0.35; 'received:google.com': 0.35; 'there': 0.35; 'useful': 0.36; 'subject:?': 0.36; 'clear': 0.37; 'branch': 0.38; 'pm,': 0.38; 'even': 0.60; 'dave': 0.60; 'improved': 0.60; 'most': 0.60; "you're": 0.61; 'kind': 0.63; 'such': 0.63; 'more': 0.64; 'due': 0.66; 'between': 0.67; 'therefore': 0.72; '2015': 0.84; 'checkin': 0.84; 'confusing': 0.84; 'detecting': 0.84; 'angel': 0.91; 'dealt': 0.91; 'to:none': 0.92
DKIM-Signature v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:cc :content-type; bh=cJHweM0YW6gJs8itxiUQg3P6m2DV6YEIsC5aC8PYUJ8=; b=x8JBPEq/otY75b+oyw41m7hRbYRK6HC+rOXzl2DAzQ6/PTiRIlhU0yewOSylJPjdtD fSjYlkp9onZbDm5I9ZzABw/QNLRbiJn1UjtzHFi7RihpuKeeIKPy/k0B33OSj8k/+kqW RaFRo1qRSHIQlJ+v04NTjZzr0v4GEmtygWteFG+fKVQQxeXYPoh4UW6jjos4XAtmGYf3 8nj4pKlQ63WOZZtuAhrk8YfAv5NRbZtjQ+PnySGgE/EPWZe9O2mLkgMPZ/jta+3gbycM cETZ21J3O71+PoyW3/Yz0DvF95ZoDo2VkRl/KmyftQOjpOfeVcwXLOs9pMefrc43EPHP uYbw==
MIME-Version 1.0
X-Received by 10.43.96.10 with SMTP id ce10mr3837668icc.59.1431090133669; Fri, 08 May 2015 06:02:13 -0700 (PDT)
In-Reply-To <554CA3B1.1080309@davea.name>
References <344fd8f6-75c1-4b7d-888d-c5c9d4498ec3@googlegroups.com> <878ud27waw.fsf@elektro.pacujo.net> <4ea2d5ac-8c19-4a53-9a09-fe6dbe4a52bd@googlegroups.com> <5549ab43$0$11108$c3e8da3@news.astraweb.com> <b0022fbc-74e2-4990-9773-9e5e07d51f14@googlegroups.com> <mailman.216.1431059590.12865.python-list@python.org> <aca29698-6b7f-4ac7-ba1f-0e60fd28d639@googlegroups.com> <mailman.217.1431061769.12865.python-list@python.org> <e60dc222-a837-4a65-9ce2-eff80ee2527f@googlegroups.com> <CAPTjJmrGFHm3i-OEHdYUgMM4zrN3BdYS7-dVgJoA5k3GO_-=DQ@mail.gmail.com> <554CA3B1.1080309@davea.name>
Date Fri, 8 May 2015 23:02:13 +1000
Subject Re: asyncio: What is the difference between tasks, futures, and coroutines?
From Chris Angelico <rosuav@gmail.com>
Cc "python-list@python.org" <python-list@python.org>
Content-Type text/plain; charset=UTF-8
X-BeenThere python-list@python.org
X-Mailman-Version 2.1.20+
Precedence list
List-Id General discussion list for the Python programming language <python-list.python.org>
List-Unsubscribe <https://mail.python.org/mailman/options/python-list>, <mailto:python-list-request@python.org?subject=unsubscribe>
List-Archive <http://mail.python.org/pipermail/python-list/>
List-Post <mailto:python-list@python.org>
List-Help <mailto:python-list-request@python.org?subject=help>
List-Subscribe <https://mail.python.org/mailman/listinfo/python-list>, <mailto:python-list-request@python.org?subject=subscribe>
Newsgroups comp.lang.python
Message-ID <mailman.247.1431090137.12865.python-list@python.org> (permalink)
Lines 36
NNTP-Posting-Host 2001:888:2000:d::a6
X-Trace 1431090137 news.xs4all.nl 2922 [2001:888:2000:d::a6]:33160
X-Complaints-To abuse@xs4all.nl
Xref csiph.com comp.lang.python:90165

Show key headers only | View raw


On Fri, May 8, 2015 at 9:53 PM, Dave Angel <davea@davea.name> wrote:
> One thing newbies get tripped up by is having some path through their code
> that doesn't explicitly return.  And in Python that path therefore returns
> None.  It's most commonly confusing when there are nested ifs, and one of
> the "inner ifs" doesn't have an else clause.
>
> Anyway, it's marginally more useful to that newbie if the compiler would
> produce an error instead of later seeing a runtime error due to an
> unexpected None result.
>
> I don't think Python would be improved by detecting such a condition and
> reporting on it.  That's a job for a linter, or a style guide program.

They're not hard for linters to notice. After all, there's a clear
difference of intent between "return" (or just falling off the end of
the function) and "return None", even though they compile to the same
byte code. Though if you start enforcing that in your checkin policy,
you might have to deal with this kind of thing:

def raise_with_code(code):
    raise SpamError("Error %d in spamination: %s" % (code,
errortext.get(code, "<unknown>")))

def spaminate_text(f):
    rc = low_level_spamination_function(f)
    if not rc: return low_level_get_spamination_result()
    raise_with_code(rc)

Clearly one branch returns a value... but figuring out that the other
one always raises isn't easy. (Though I suppose in this case it could
be dealt with by having a function that constructs the error, and then
you "raise make_spam_error(rc)" instead.)

You're definitely right that Python shouldn't check for it.

ChrisA

Back to comp.lang.python | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

asyncio: What is the difference between tasks, futures, and coroutines? Paul  Moore <p.f.moore@gmail.com> - 2015-05-05 08:22 -0700
  Re: asyncio: What is the difference between tasks, futures, and coroutines? Zachary Ware <zachary.ware+pylist@gmail.com> - 2015-05-05 11:11 -0500
    Re: asyncio: What is the difference between tasks, futures, and coroutines? Paul  Moore <p.f.moore@gmail.com> - 2015-05-05 10:55 -0700
  Re: asyncio: What is the difference between tasks, futures, and coroutines? Terry Reedy <tjreedy@udel.edu> - 2015-05-05 13:15 -0400
  Re: asyncio: What is the difference between tasks, futures, and coroutines? Marko Rauhamaa <marko@pacujo.net> - 2015-05-05 20:45 +0300
    Re: asyncio: What is the difference between tasks, futures, and coroutines? Rustom Mody <rustompmody@gmail.com> - 2015-05-05 21:47 -0700
      Re: asyncio: What is the difference between tasks, futures, and coroutines? Steven D'Aprano <steve+comp.lang.python@pearwood.info> - 2015-05-06 15:48 +1000
        Re: asyncio: What is the difference between tasks, futures, and coroutines? Rustom Mody <rustompmody@gmail.com> - 2015-05-07 21:06 -0700
          Re: asyncio: What is the difference between tasks, futures, and coroutines? Chris Angelico <rosuav@gmail.com> - 2015-05-08 14:33 +1000
            Re: asyncio: What is the difference between tasks, futures, and coroutines? Rustom Mody <rustompmody@gmail.com> - 2015-05-07 21:53 -0700
              Re: asyncio: What is the difference between tasks, futures, and coroutines? Rustom Mody <rustompmody@gmail.com> - 2015-05-07 21:55 -0700
              Re: asyncio: What is the difference between tasks, futures, and coroutines? Chris Angelico <rosuav@gmail.com> - 2015-05-08 15:09 +1000
                Re: asyncio: What is the difference between tasks, futures, and coroutines? Rustom Mody <rustompmody@gmail.com> - 2015-05-07 23:36 -0700
                Re: asyncio: What is the difference between tasks, futures, and coroutines? Chris Angelico <rosuav@gmail.com> - 2015-05-08 16:42 +1000
                Re: asyncio: What is the difference between tasks, futures, and coroutines? Dave Angel <davea@davea.name> - 2015-05-08 07:53 -0400
                Re: asyncio: What is the difference between tasks, futures, and coroutines? Chris Angelico <rosuav@gmail.com> - 2015-05-08 23:02 +1000
      Re: asyncio: What is the difference between tasks, futures, and coroutines? Dennis Lee Bieber <wlfraed@ix.netcom.com> - 2015-05-06 09:11 -0400
        Re: asyncio: What is the difference between tasks, futures, and coroutines? Rustom Mody <rustompmody@gmail.com> - 2015-05-07 21:20 -0700
  Re: asyncio: What is the difference between tasks, futures, and coroutines? Ian Kelly <ian.g.kelly@gmail.com> - 2015-05-05 11:46 -0600
    Re: asyncio: What is the difference between tasks, futures, and coroutines? Paul  Moore <p.f.moore@gmail.com> - 2015-05-05 11:03 -0700
  Re: asyncio: What is the difference between tasks, futures, and coroutines? Skip Montanaro <skip.montanaro@gmail.com> - 2015-05-05 12:55 -0500
  Re: asyncio: What is the difference between tasks, futures, and coroutines? Terry Reedy <tjreedy@udel.edu> - 2015-05-05 18:38 -0400

csiph-web