python:导入函数,引用全局范围

时间:2016-01-28 15:17:58

标签: python import scope

我有两个文件module.pymain.py

module.py中,我有一个函数,它使用在其范围之外定义的常量。

#module.py
def add(x):
    s = x + const
    return s
if __name__ == '__main__':
    const = 2
    print(add(2)) 

直接运行时输出4作为输出。

main.py我有:

#main.py
import module as m

const = 2
print(m.add(2))

它出错:NameError: name 'const' is not defined

有没有办法让m.add()在const全局范围内查找main.py?我不想将const传递给add()作为函数变量。

1 个答案:

答案 0 :(得分:1)

目前尚不清楚您的实际用例是什么,但如果您希望在模块之间拥有共享变量,则需要在模块范围内定义该变量。

在一个模块中声明它:

#module.py
const = 0  # declare as global of module.py
def add(x):
    s = x + const
    return s
if __name__ == '__main__':
    const = 3
    print(add(2))

...并在另一个中引用它:

#main.py
import module as m

m.const = 3  # reference module's variable 
print(m.add(2))