我是python的新手,所以请原谅我。
我有一个模块: beep.py ,其中包含一个变量: p (包含字符串)和功能: ps 。我需要从模块中访问这两个模块: boop ,并在那里使用它们。
我的问题是,如果我尝试在 boop 中编写import beep
,那么 beep 会运行所有代码。有没有办法解决这个问题?
答案 0 :(得分:2)
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'
答案 1 :(得分:0)
Python总是评估您导入的文件,因此如果您在函数或类之外有一些代码,它将被执行。正如tdelaney所述,您可以使用
保护导入的文件if __name__ == '__main__':
我在这里创建了完整的示例:https://gist.github.com/carlosvin/d9a1eb978fac226dbbe9