导入使用全局变量的方法

时间:2013-11-26 11:42:30

标签: python

我是python的新手,我有一个问题。

我想将所有变量保存在一个文件中,将方法保存在另一个文件中。

这就是我的想法:

file1.py

import calculations

a = 3
b = 2
c = subtraction()
print c

calculations.py

def subtraction():
    answer = a-b
    return answer

calculations.py中的方法必须在file1.py中使用,他们需要使用file1.py中所述的“全局”变量。

我的逻辑在哪里失败?

2 个答案:

答案 0 :(得分:3)

这不是Python中全局变量的工作原理。全局仅限于它们所定义的模块。

您必须将变量作为参数传递给subtraction()而不是:

def subtraction(a, b):
    return a - b

c = subtraction(a, b)

请注意,您导入了模块,因此您需要将该函数作为该模块的属性引用:

c = calculations.subtraction(a, b)

或者,只将函数导入模块命名空间:

from calculations import subtraction

答案 1 :(得分:3)

当定义函数时,编译器将其“全局”范围指定为它所定义的模块的范围。即使在另一个模块中存在对该函数的引用,该范围也不会改变,因为该函数本身是不变。