On Wed, Sep 17, 2014 at 03:19:52PM +1000, Tennessee Leeuwenburg wrote:
I would like to be able to use named sections to organise my code, much an inline submodules, bit without using classes or functions to organise them. I would use this if I had a group of related functions which were not written in an object-oriented-style, possibly due to not needing any shared state. Rather than break these out into a new file, I would like to just be able to use internal structure to declare the relationship. I've used the keyword 'block' to indicate the start of a named block.
For example,
block signin: def handle_new_user(): do_it()
def handle_existing_user(): do_it()
I think that this is very close to what C++ calls namespaces, and I think that the Zen of Python has something to say about namespaces :-) For quite some time I've been mulling over the idea of having multiple namespaces within a single module, but my ideas haven't been advanced enough to raise here. While having dedicated syntax for it would be nice: namespace stuff: a = 2 def stuff(x): ... assert stuff.a == 2 I *think* it should be possible to abuse the class statement to get the same effect, by use of a metaclass or possibly a class decorator: @namespace class stuff: a = 2 def stuff(x): ... assert isinstance(stuff, ModuleType) assert stuff.a == 2 The hardest part, I think, is getting scoping right in the functions. What I would expect is that inside a namespace, scoping should go: local current namespace module globals built-ins so that functions inside a single namespace can refer to each other without needing to give a fully-qualified name. In other words, this sort of namespace is just like a module, but it doesn't need to be written in an external file. -- Steven