> The builtins don't need to be imported, but they're identifiers like > anything else. They're a namespace that gets searched after > module-globals.
Yes, I understand, though for clarity and separability, it seems that having them in a namespace that gets explicitly pulled into the global space is less messy, despite the extra step (the default python distribution could include a STARTUP file that imports the builtin types). But I must withhold my personal philosophy lest it get too complicated. >> And int, list, tuple, dict and such always seemed >> like keywords to my CS self because they were included in Python's >> type system (like "int" would be in C). > > Yep, but in Python, types/classes are themselves objects, so you can > pass them around like anything else. This also downgrades them from > "language keyword" to "always-available name", which in effect > upgrades your _own_ classes to the same level. Yes, and here is where I've been trying to argue that Python's object model isn't right. But I must abstain from commenting further. >> They are all one-step removed from keywords. And yet, since they are >> not in a separate namespace, they should not be used as variable >> names. Perhaps since they are very different from one another, they >> should be put in separate namespaces off of a global, root >> namespace... (math, string, etc.) > > There's no point forcing them to be looked up in a two-step process. > If you want that, you can simply reference them as > __builtins__.whatever, but you can instead just reference them as the > unadorned name whatever. They contribute heavily to the simplicity and > readability of Python code - imagine if every call to len() had to be > qualified. Well I would anticipate a keyword ("load"?) so one could load a particular namespace into the global scope. The issue I guess is when should modules be "on file" vs. "in memory" like the builtins? The reason this is coming up, is because I would like to imagine a data ecosystem, where I can import a set of objects from the network as if they are local right into my interpreter environment. -- MarkJ Tacoma, Washington -- http://mail.python.org/mailman/listinfo/python-list