【问题标题】:Get a single variable and a single function from a module without executing the module?从模块中获取单个变量和单个函数而不执行模块?
【发布时间】:2014-05-15 21:42:06
【问题描述】:

我是python新手,请见谅。

我有一个模块:beep.py,其中包含一个变量:p(包含一个字符串)和函数:ps。我需要从一个模块中访问这两个:boop,并在那里使用它们。

我的问题是,如果我尝试在 boop 中写 import beep,那么 beep 会运行它的所有代码。有什么办法可以解决这个问题吗?

【问题讨论】:

  • beep 是如何布局的?你有main() 函数,和/或使用if __name__ == "__main__":

标签: python variables import


【解决方案1】:

导入模块时,Python 会执行所有顶级指令。旨在可导入的行为良好的模块应该限制它们对顶级代码的操作。 - 他们可以在导入时运行代码,但它不应该有副作用。通常使用if __name__ == '__main__' 成语来拥有一个可以作为脚本和导入模块运行的python 模块(参见示例)。

如果import beep 引起问题,那么要么它不是为导入而设计的,要么是写得不好,需要修复。

print 'i always run'

def fctn():
    print 'i run when called'

if __name__ == '__main__':
    print 'i run if called as a script but not if imported as a module'

【讨论】:

    【解决方案2】:

    Python 总是评估您导入的文件,因此如果您在函数或类之外有一些代码,它将被执行。正如tdelaney 所说,您可以使用

    保护导入的文件
    if __name__ == '__main__':
    

    我在这里创建了完整的示例:https://gist.github.com/carlosvin/d9a1eb978fac226dbbe9

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-27
      • 2011-01-01
      • 2019-10-17
      • 2010-12-09
      • 2015-04-07
      • 2017-03-06
      • 2019-03-07
      相关资源
      最近更新 更多