[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 <something> you can use <something> 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 my_foo > 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 <whatever>" 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/)
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4