On Oct 29, 2019, at 06:33, mer...@gmx.net wrote:
> 
> On the first scroll in the docs, that doesn't seem to map to the 
> namespace-concepts that are known from C++ or PHP, where you explicitly 
> define them within the file, right?

The meaning of “namespace” is a place where you can bind values to names and 
look them up by name, usually with dot syntax or something similar. Every 
module is a namespace containing its globals. A function activation frame is a 
namespace containing its locals (although it’s a hidden one you can’t access 
like a module). Every object is a namespace containing its attributes. And so 
on.

In C++ (until the upcoming C++20 version), there are no modules (if you 
#include a header file, you’re just including the header’s text in the middle 
of your file), so they added the namespace statement to create explicit 
module-like namespaces. I don’t know as much about PHP, but most of its design 
is intended to feel familiar to C and C++ developers even if it doesn’t quite 
make sense, so I’m guessing that’s why it has a similar feature.

Anyway, in Python, a “namespace package” is a package that’s _just_ a 
namespace—it contains modules and other packages that can be looked up by name, 
but doesn’t have any top-level code that gets run when you import it. This is 
similar to the SimpleNamespace type—it’s not a class whose instances are 
namespaces, because every class’s instances are namespaces; it’s a class whose 
instances are _just_ namespaces, with no other behavior on top of that. So, a 
namespace package is just one without an __init__.py file or equivalent.

It’s a bit weird that Python conflates the notion of namespace packages 
(packages that are just namespaces, with no other behavior) with open or 
composite packages (packages that can be added to by other packages); I believe 
it works that way for historical reasons that go back to the way you faked it 
in 2.x with a third-party library.

_______________________________________________
Python-ideas mailing list -- python-ideas@python.org
To unsubscribe send an email to python-ideas-le...@python.org
https://mail.python.org/mailman3/lists/python-ideas.python.org/
Message archived at 
https://mail.python.org/archives/list/python-ideas@python.org/message/OMCDJTUZOASPDW4BGRSO7LZG5XO2H3QN/
Code of Conduct: http://python.org/psf/codeofconduct/

Reply via email to