[Python-ideas] Default arguments in Python - the return - running out of ideas but...

spir denis.spir at free.fr
Wed May 13 17:54:37 CEST 2009


Le Wed, 13 May 2009 11:52:57 -0300,
Jeremy Banks <jeremy at jeremybanks.ca> s'exprima ainsi:

> To someone who's a novice to this, could someone explain to me why it
> has to be an existing keyword at all? Since not identifiers are valid
> in that context anyway, why couldn't it be a new keyword that can
> still be used as an identifier in valid contexts? For example (not
> that I advocate this choice of keyword at all):
> 
>     def foo(bar reinitialize_default []): # <-- it's a keyword here
>         reinitialize_default = "It's an identifier here!"
> 
> That would be a syntax error now and if it were defined as a keyword
> only in that context it wouldn't introduce backwards compatibility
> problems and wouldn't force us to reuse an existing keyword in a
> context that may be a bit of a stretch.
> 
> Is there a reason that this wouldn't be a viable approach?

My opinion on this is you're basically right. Even 'print' (for py<3.0) could be an identifier you could use in an assignment (or in any value expression), I guess, for parse patterns are different:
   print_statement : "print" expression
   assignment      : name '=' expression
So you can safely have "print" as name, or inside an expression. Even "print print" should work !

But traditionnally grammars are not built as a single & total definition of the whole language (like is often done using e.g. PEG, see http://en.wikipedia.org/wiki/Parsing_Expression_Grammar) but as a 2-layer definition: one for tokens (lexicon & morphology) and one for higher-level patterns (syntax & structure).
The token layer is performed by a lexer that will not take the context into account to recognize tokens, so that it could not distinguish several, syntactically & semantically different, occurrences of "print"  like above.
As a consequence, in most languages,
  key word = reserved word

There may be other reasons I'm not aware of.

Denis
------
la vita e estrany



More information about the Python-ideas mailing list