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

标签 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:名称'const'未定义

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

最佳答案

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

在一个模块中声明它:

#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))

关于python:导入引用全局范围的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35065249/

相关文章:

python - 为什么字符串方法 str.format(value) 对于整数值和字符串值具有不同的默认填充(空字符串)?

python - django i18n 翻译中的性别问题

powershell - 使用 powershell_script 自动导入 mediawiki

python - 非常奇妙的循环行为 : lists changes identity. 发生了什么?

python - 发送到 X11 的 rpy 作的图突然关闭?

python - 如何从时间戳创建每小时/天的seaborn热图,每小时有多个数据点

python - Ubuntu Python "No module named paramiko"

java - 类路径中带有属性文件的外部库的导入未解决

java - Web 应用程序上下文范围的奇怪行为

javascript - 如何在作为成功回调传递给 getJSON 的方法中引用我的对象?