[Python-Dev] Re: elements of decorator syntax suggestions

John Marshall John.Marshall at ec.gc.ca
Fri Aug 6 20:25:52 CEST 2004


On Fri, 2004-08-06 at 17:19, Steven Bethard wrote:
> I think one of the biggest reasons we're having such problems coming
> to any agreement on decorator syntax is that each proposal makes a
> number of syntax decisions, not just one.  For decorators, I see the
> following decisions that must be made:
> 

> 1) Indicator
> 
> 2) Location
> 
> 3) List notation
> 
> 4) Indentation

I think you have done a good job identifying and
isolating what the issues are regarding decorator
options. I think another thing that should perhaps
be made clearer (maybe for me only?) is to identify,
in order of importance/signfigance, the relationship
between decorators and the function:
1) is the function/method signature more important
   than the decorators (to the programmer)?
2) do the decorators belong or are affected by the function?
3) what other constructs in Python say/imply "look ahead
   for what I am about to affect/define"?

I understand that designing programming languages is
sometimes an art rather than a science (natural languages
a chock full of exceptions to the rule). But if the
priority of functions and decorators are established,
then I think this would help.

In response to my own questions above:
1) From my perspective, it seems that almost everybody
   would say that the function (class also) signature is
   more important than decorators. For example, how many
   people would say "I wonder where the classmethod
   function is?" Instead, people would say, "Where is my
   function xyz()". This seems to argue for the decorators
   following (somewhere) after the signature.

   Of course highlighting editors can help by marking off
   function names and parameters, but this argument only
   serves to confirm that the signature is the KEY thing
   programmers are interested in. Apart from aesthetics,
   which are subjective and could be debated endlessly, I
   cannot see how one could argue otherwise.

2) Perhaps I am not understanding fully. Can someone explain
   how decorators before the function logically belong outside
   of the function definition block if they are intended to
   affect the function? Are the decorators meant to affect
   something other than the function? It seems to me that
   in every other situation in Python (please correct me if I
   am wrong) blocks are the way we are able to identify what
   belongs to what (e.g., local variable to a function).
   The current decorator approach says to me, "I belong to
   the class" (if a class is involved), or "I belong to the
   module" (if no class is involved).

3) In a sense, this point is somewhat related to #2. Does
   Python support an implicit "I am doing something now, on
   something I haven't defined, but which is coming up next"
   anywhere else than the decorator before function
   construction? Even in classes, Python forces the use of
   self.xxx (explicit).
    
Hope this contributes to the discussion.

John



More information about the Python-Dev mailing list