[Python-Dev] Re: elements of decorator syntax suggestions (original) (raw)

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