Python范围规则究竟是什么?
如果我有一些代码:
code1
class Foo:
   code2
   def spam.....
      code3
      for code4..:
       code5
       x()
在哪里x找到?一些可能的选择包括以下列表:
在执行期间,当函数spam在其他地方传递时,也存在上下文.也许lambda函数的传递方式有点不同?
某处必须有简单的参考或算法.对于中级Python程序员来说,这是一个令人困惑的世界.
我从阅读文档中了解到,Python有一个单独的函数命名空间,如果我想在该函数中使用全局变量,我需要使用global.
我正在使用Python 2.7,我尝试了这个小测试
>>> sub = ['0', '0', '0', '0']
>>> def getJoin():
...     return '.'.join(sub)
...
>>> getJoin()
'0.0.0.0'
即使没有,事情似乎也很好global.我能够毫无问题地访问全局变量.
我错过了什么吗?另外,以下是来自Python文档:
全局语句中列出的名称不能定义为形式参数,也不能定义为for循环控制目标,类定义,函数定义或import语句.
虽然形式参数和类定义对我有意义,但我无法理解for循环控制目标和函数定义的限制.
所以我有两个不同的文件,有点像这样:
file1.py
from file2 import *
foo = "bar";
test = SomeClass();
file2.py
class SomeClass :
    def __init__ (self):
        global foo;
        print foo;
但是我似乎无法让file2识别来自file1的变量,即使它已经导入到file1中.如果以某种方式可行,那将是非常有帮助的.