[Python-ideas] Before and after the colon in funciton defs.
tjreedy at udel.edu
Wed Sep 21 05:36:35 CEST 2011
On 9/20/2011 1:09 PM, Guido van Rossum wrote:
> On Tue, Sep 20, 2011 at 9:59 AM, Terry Reedy<tjreedy at udel.edu> wrote:
>> The problem with an earlybind statement in the body is that it is in the
>> body, which should be runtime stuff. I would prefer something in the header.
>> A semi-colon or other char would be sufficient syntactically:
>> def f(a; len, alist=): alist.append(a); return len(alist)
>> where a bare identifier like 'len' *means* 'len=len'.
> I would be much more interested in a tweak to the language semantics
> where the compiler is allowed to assume that "len means len" if there
> is no global assignment to it in a module. There are many past threads
> about this topic. It should make the feature proposed here unnecessary
> -- at least its use for manual micro-optimizations, which I mostly
> find an offense to the reader (even in the shortened form proposed
For those not party to the earlier threads, this alternate proposal
would bread any code that monkeypatches an imported-module-only override
of a builtin, something like:
def mylen(o): return <whatever>
import mod; mod.len = mylen
I do not mind the semantic change itself, and it would benefit nearly
all code, including module-level code would not be affected by def
gimmicks. Some issues I see that perhaps were discussed, but I do not
remember: 1) module.__setattr__ should then raise an exception at such
attempts; 2) it makes the language more context sensitive than it
currently is; 3) compile() should apply the rule even for single
statements or even expressions.
Terry Jan Reedy
More information about the Python-ideas