1

文件“Definitions.py”包含以下代码:

def testing(a,b):
    global result
    for count in range(a,b):
        result.append(0)
    print result

虽然文件“Program.py”包含代码:

from Definitions import *
result = []
testing(0,10)
print result

Definitions.py 的结果是预期的零列表,而 Program.py 中的变量只是空列表,尽管结果被定义为全局变量。如何从 Definitions.py 运行函数,但传递要在 Program.py 中使用的结果变量?

4

3 回答 3

1

全局命名空间是相对于模块的。它们不在模块之间共享。

您可以返回result

def testing(a,b):
    result = []
    for count in range(a,b):
        result.append(0)
    return result

并像这样使用它:

result = testing(0,10)
print result

但请注意,在上面,每次调用它时都会result = []创建一个新列表 。testing

于 2013-05-04T10:25:25.670 回答
0

全局 fortesting是 的全局命名空间Definitions.py,即def testing(a,b)定义的位置。因此,它无法查看/访问resultin Program.py

于 2013-05-04T10:28:32.667 回答
0

全局范围仅适用于它所在的模块(文件)。

于 2013-05-04T10:25:44.043 回答