在模块之间传递变量

dut*_*utt 5 python

我想知道为什么这个简单的代码不起作用.

在main.py我有

def foo():
    HTTPHelper.setHost("foo")
    host = HTTPHelper.host()
Run Code Online (Sandbox Code Playgroud)

并在HTTPHelper.py中:

_host = None
def setHost(host):
    _host = host
def host():
    return _host
Run Code Online (Sandbox Code Playgroud)

但是当我逐步执行foo()时,主机变为NoneType,即使我之前将它设置在行上.非常困惑...

小智 8

格伦的答案将在一个模块中修复你的直接问题,但是为了给一个人一个钓鱼杆而不是一条鱼: 简明描述范围规则?

你可以很好地阅读范围和Python的LEGB规则.存在概念的范围和领域一般也适用于编程和分析,并且值得花时间理解概念.

值得注意的是,如果你正在处理诸如对象之类的东西(以及你所写的东西使它看起来像你想要的那样),那么你应该编写一个类并设置它的属性,而不是在模块导入后处理的全局变量. .


Gle*_*ard 5

def setHost(host):
    global _host
    _host = host
Run Code Online (Sandbox Code Playgroud)