[Python-Dev] Using and binding relative names (was Re: PEP for Better Control of Nested Lexical Scopes)

Steven Bethard steven.bethard at gmail.com
Thu Feb 23 04:58:57 CET 2006

Steven Bethard wrote:
> And, as you mention, it's consistent with the relative import feature.

Greg Ewing wrote:
> With imports, .foo is an abbreviation for myself.foo,
> where myself is the absolute name for the current module,
> and you could replace all instances of .foo with that.

Phillip J. Eby wrote:
> Actually, "import .foo" is an abbreviation for "import myparent.foo", not
> "import myparent.myself.foo".

If we wanted to be fully consistent with the relative import
mechanism, we would require as many dots as nested scopes.  So:

   def incrementer(val):
       def inc():
           .val += 1
           return .val
       return inc

but also:

    def incrementer_getter(val):
        def incrementer():
            def inc():
                ..val += 1
                return ..val
            return inc
        return incrementer

(Yes, I know the example is silly.  It's not meant as a use case, just
to demonstrate the usage of dots.)  I actually don't care which way it
goes here, but if you want to make the semantics as close to the
relative import semantics as possible, then this is the way to go.

Grammar am for people who can't think for myself.
        --- Bucky Katt, Get Fuzzy

More information about the Python-Dev mailing list