Bjoern Schliessmann schreef: > Laurent Pointal wrote: > >> And so the solution to add "global foo" before using it. > > Didn't you read his final question? > > | All of a sudden, tiny() can see the global variable "foo". Very > | confusing! Why is it that tiny() sometimes can, and sometimes > | can't, see the global variable "foo"? > > I have no explanation for this, but I'm interested in one, too.
Within functions Python can read from global variables, even without a 'global' statement. Complications only arise when you try to write to it: in that case Python assumes it is a local variable instead of a global. It surprised me a bit when I first found out about this: I would have thought that Python would threat it as a local throughout the function until the function assigns something to it. That's not what happens: if the function assigns to it, *all* mentions of the variable are considered local. -- If I have been able to see further, it was only because I stood on the shoulders of giants. -- Isaac Newton Roel Schroeven -- http://mail.python.org/mailman/listinfo/python-list