Hi Robert, I was using global variables some time ago, too. But with the time the program simply got unmaintainable, because it is very hard to trace, why a global variable has some special value and not the one, you thought it should have. So I redesigned the program and now I can do it without global variables.
To me global variables are now in most cases a sign of bad design. Is there no other way to do it? Greets Xaver "robert" <[EMAIL PROTECTED]> schrieb im Newsbeitrag news:[EMAIL PROTECTED] > Using global variables in Python often raises chaos. Other languages use a > clear prefix for globals. > > * you forget to declare a global > * or you declare a global too much or in conflict > * you have a local identical variable name and want to save/load it > to/from the global with same name > * while you add code, the definition of globals moves more and more apart > from their use cases -> weirdness; programmers thinking is fragmented > * using globals()['xy'] is 'stringy non-program-code' > > > Thus, since long time at the head of my bigger modules I often put... > > _global = sys.modules[__name__] > > ...and use global variables only/mainly like > > def f(y): > v=x=_global.x > _global.y=y > ... > > for me this method is much more clear overall. And it is in line with the > clear exposition of "self" as regular object in Python methods (in a much > more self-similiar way compared to frozen @ $ m_... hacks in other > languages) > > I know, this home created _global creates a circular ref, but usually this > is not serious as modules are unload only at the end of a program. > > ( side question: does this maybe hinder global objects from being > __del__'ed correctly; is at least gc() run when all modules are pulled off > at exit() ) > > Somehow I miss a nice standard method for using globals in an unfragmented > way everywhere. What do you think? > > Robert -- http://mail.python.org/mailman/listinfo/python-list