On 31/01/07, [EMAIL PROTECTED] <[EMAIL PROTECTED]> wrote: > Fortunately, the scopes in question are always named. > Can't we just reference what's already there? > > >>> x = 10 > >>> def a(): > ... x = 3 > ... def b(): > ... a.x = 4 > ... print a.x > ... > ... b() > ... print x > ... > >>> a() > 4 > 4 > >>> print x > 10
There is further research you need to do, as this option has been discussed before. I'm not sure if it's in the PEP, but it has certainly come up on the mailing list - you should check the archives for more information. Basically, you can't use "a.x" as the function a has not yet been created - you are still executing the "def". So you don't have access to the function object's attributes in the way you need. (The technical details are beyond me, and that explanation probably shows it, but I hope you get the gist :-)) > Of course, the module itself is unnamed, and it would > be completely consistent to use the single prefixed dot > to reference it: > > >>> x = 10 > >>> def a(): > ... x = 3 > ... def b(): > ... a.x = 4 > ... print a.x > ... > ... .x = 5 > ... b() > ... print x > ... > >>> a() > 4 > 4 > >>> print x > 5 Yuk. > However, I would think a placeholder is easier to spot: > > >>> x = 10 > >>> def a(): > ... x = 3 > ... def b(): > ... a.x = 4 > ... print a.x > ... > ... @.x = 5 > ... b() > ... print x > ... > >>> a() > 4 > 4 > >>> print x > 5 Double yuk. > Be gentle. Sorry, I could probably have been more gentle :-) Seriously, thanks for your interest, and don't be put off, but if you pick up on a long-standing proposal like this, you really do need to do a lot of research. Many of the obvious, a lot of the not-so-obvious, and even some of the downright stupid options will have already been discussed, and you can't always guarantee that everything gets captured in the PEP. Checking the list archives is always a good idea. If you want to get involved without needing to do quite so much pre-work, joining in on one of the current threads is often a good way to start. Hope this helps, Paul. _______________________________________________ Python-Dev mailing list Python-Dev@python.org http://mail.python.org/mailman/listinfo/python-dev Unsubscribe: http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com