On Fri, Jun 08, 2018 at 02:41:54PM -0400, David Teresi wrote: > One of the features I miss from languages such as C# is namespaces that > work across files - it makes it a lot easier to organize code IMO.
I too have often wanted a sub-module namespace without the need to separate code into seperate files. Something like a package, but existing inside a single physical file. In pseudo-code: a = 1 def spam(): return a namespace A: # conceptually, this is like a module within a module a = 100 def spam(): return a # later spam() + A.spam() => returns 101 If that looks similar to the class statement, except there's no need to create an instance, that's deliberate. > Here's an idea I had - it might not be the best idea, just throwing this > out there: a "within" keyword that lets you execute code inside a > namespace. For example: [...] > within cool_namespace: > def foo(): > print("foo run") [...] > within A.cool_namespace: > foo() # prints "foo run" This sort of thing is similar to a old FAQ: https://docs.python.org/3/faq/design.html#why-doesn-t-python-have-a-with-statement-for-attribute-assignments so it isn't unambiguously clear what foo would mean: is it the current namespace foo, the surrounding namespace, or the module namespace? Its not necessarily undoable: currently Python has what the "Learning Python" book calls the LEGB scoping rule: L - local E - enclosing function(s) or class G - global (module) B - builtins It could be conceivable to add a rule to slot a namespace in there somewhere, but the scoping rules already are fairly hairy (e.g. classes and functions work a little differently, we have a sub-local scope for comprehensions) and I'd be cautious about making them hairier with something like your "within"/"with" statement. The question I have is what is your motive for this? What problem does this solve for you? -- Steve _______________________________________________ Python-ideas mailing list Python-ideas@python.org https://mail.python.org/mailman/listinfo/python-ideas Code of Conduct: http://python.org/psf/codeofconduct/