在模块之间传递变量[重复]

Posted

技术标签:

【中文标题】在模块之间传递变量[重复]【英文标题】:Passing variables between modules [duplicate] 【发布时间】:2011-04-21 14:25:41 【问题描述】:

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

在 main.py 我有

def foo():
    HTTPHelper.setHost("foo")
    host = HTTPHelper.host()

在 HTTPHelper.py 中:

_host = None
def setHost(host):
    _host = host
def host():
    return _host

但是当我单步执行 foo() 时,host 变成了 NoneType,即使我之前设置它就行了。很迷茫……

【问题讨论】:

【参考方案1】:
def setHost(host):
    global _host
    _host = host

【讨论】:

【参考方案2】:

格伦的回答将在一个模块内解决您的直接问题,但为了给男人一根鱼竿而不是一条鱼: Short Description of the Scoping Rules?

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

还值得注意的是,如果您将此类事物视为对象(并且您编写的内容看起来像您打算的那样),您应该编写一个类并设置其属性,而不是您之后处理的全局变量一个模块导入。

【讨论】:

我给了他一张鱼的照片,希望他自己研究学习如何制作自己的鱼竿——global 关键字和搜索引擎对他来说应该足够了找到其余的。 很公平,顺便说一句,我无意冒犯或偏向您的回复,只是注意到为什么另一个回复相同的主题。 感谢您的提示。我知道应该如何设计它,现在它是一个合适的类,我正在研究另一部分,只是想要一些快速有效的东西,当一些简单的东西没有时,它真的被搞砸了。我是python新手,对编程不是那么陌生。在同一个项目中使用 Python、C++、C#、php 会打乱你的语法思维:)

以上是关于在模块之间传递变量[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Winforms C#在表单之间传递变量[重复]

R Shiny:如何在嵌套模块之间传递反应变量

页面之间的会话变量丢失[重复]

在视图控制器之间的 NSString 中传递数据 - 目标 C [重复]

在 addEventListener 中传递函数中的变量 [重复]

通过引用javascript传递原始变量[重复]