【问题标题】: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,即使我之前设置它就行了。很迷茫……

【问题讨论】:

    标签: python


    【解决方案1】:
    def setHost(host):
        global _host
        _host = host
    

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

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