I'm having a vexing problem with global variables in Python. Please consider the following Python code:
#! /usr/bin/env python def tiny(): bar = [] for tmp in foo: bar.append(tmp) foo = bar if __name__ == "__main__": foo = ['hello', 'world'] tiny() When I try to run this, I get: Traceback (most recent call last): File "./xtalk.py", line 11, in ? tiny() File "./xtalk.py", line 5, in tiny for tmp in foo: UnboundLocalError: local variable 'foo' referenced before assignment For some reason, Python can't see the global variable "foo" in the function tiny(). Why is that? If I change the code to this: #! /usr/bin/env python def tiny(): for tmp in foo: print tmp if __name__ == "__main__": foo = ['hello', 'world'] tiny() I get this: hello world 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"? If anyone can enlighten me about what's going on with Python and global variables, I would appreciate it! -- http://mail.python.org/mailman/listinfo/python-list