[Python-Dev] PEP 318: Let's not give in to FUD

Barry Warsaw barry at python.org
Fri Apr 2 14:08:56 EST 2004


On Fri, 2004-04-02 at 12:05, Jeremy Hylton wrote:
> On Fri, 2004-04-02 at 08:24, Barry Warsaw wrote:
> > It may be nonsense, but it means something today.  So it can't be
> > obvious that they're connected because today, they aren't.
> 
> Your original complaint was: "What are newcomers going to make of
> this?"  Newcomers aren't going to be worried about the small change in
> semantics that decorator-before would entail, because they won't know
> the old semantics.  

They already know the old semantics.  If they were to encounter that
syntax today, they'd know that Python throws away the results.  If /I/
saw that construct in today's Python code, I'd start looking for side
effects.

> > If tomorrow this same code means something different, users looking at
> > the code will have to know what version of Python they're using, and
> > make sure it's the right one ("uh, how do I do that?").  If they were to
> > use decorator-before-def code in an older version of Python, the program
> > would be accepted but silently do the wrong thing.
> 
> I agree there's a risk here, but we've faced that kind of risk before. 
> We used future statements for nested scopes, but only one version.  If
> you're looking at code with free variables, you need to know whether it
> was written to run with or without nested scopes.  Code written for one
> version will fail at runtime on the other.  (It may or may not fail
> silently.)

Adding a future statement would make decorator-before-def slightly more
acceptable.  Adding a keyword to introduce decorator-before-def would
make it slightly more acceptable.  All-in-all, I still think
decorator-before-colon is plenty readable and the more obvious of the
two choices.

-Barry





More information about the Python-Dev mailing list