[Python-Dev] Re: Python-Dev Digest, Vol 5, Issue 57 (original) (raw)

Guido van Rossum guido at python.org
Tue Dec 16 17:07:56 EST 2003


[Ed]

What's the motivation for restricting it to from-imports? I suspect that this will cause confusion, and it doesn't feel self-consistent to me: why can you call a module ".foo" in one context, and not in another? In particular, I think that if people see that you can do:

from .foo import * Then they'll assume that they can also do: import .foo With the obvious semantics, i.e. equivalence to: from . import foo What do we gain by not extending the syntax to from-less imports?

Currently, the rule is that after

import

you can use

in an expression to refer to whatever you imported. This applies to both

import foo <--> foo in expressions

and

import foo.bar <--> foo.bar in expressions

But if we were to allow

import .foo

we'd have to allow

.foo

in expressions, and I would like to reserve that syntax for the "with" statement.

[Werner]

But it would be possible to say:

import .foo as myfoo import foo and access both through modules through the name they're bound to. Therefore I'd propose to allow relative from-less imports, but require them to always use the "as" clause.

This just adds more complexity; there's nothing you can do without this addition.

[Jack]

Is "from . import *" allowed? Whenever I start to think about it I tend to go into oscillation (yes because within package foo its the same as "from foo import *" on the outside; no because "import *" isn't allowed today either).

Yes, "from . import " has the exact same meaning as spelling out the corresponding absolute module path after "from".

--Guido van Rossum (home page: http://www.python.org/~guido/)



More information about the Python-Dev mailing list