[Python-Dev] PEP 318 - check for consensus (original) (raw)

Fred L. Drake, Jr. fdrake at acm.org
Wed Apr 14 14:00:05 EDT 2004


On Wednesday 14 April 2004 12:46 pm, Phillip J. Eby wrote:

Actually, those are not the obvious keywords. The function's name is an attribute of the function, so it's redundant. For that matter, a function's globals are available as 'func_globals'. It's the enclosing local scope that the function was defined in that's needed. For a function defined at module level, the globals and locals are the same, but for functions defined in a class body, you need the class locals. So, 'locals' would be a more obvious keyword.

Locals would certainly be nice to have. What should be done about the case of:

def func():
    [decorator]
    def f(): pass
    return f

I think the decorator would want some way of determining that the locals can't be modified so an appropriate error can be raised, if it's interested in modifying the namespace directly. This could be done by returning a dict proxy that denies writes; we have one of those already.

I don't know that there are many examples where we want write access to the locals in practice; the most interesting case for me is the set of property decorators that have been discussed, and read access is sufficient for those.

-Fred

-- Fred L. Drake, Jr. PythonLabs at Zope Corporation



More information about the Python-Dev mailing list