如何防止python中导入的模块执行模块代码?

如何防止python中导入的模块执行模块代码?,python,import,Python,Import,既然我有档案 testone.py if __name__ == "__main__": from testtwo import Fu class Foo: def bar(self): print 'barrr' testtwo.py class Fu: def baz(self): print 'baz' Fu().baz() # function call within module 如何从文件testtwo.py导入Fu类,而

既然我有档案

testone.py

if __name__ == "__main__":
    from testtwo import Fu
class Foo:
    def bar(self):
        print 'barrr'
testtwo.py

class Fu:
    def baz(self):
        print 'baz'

Fu().baz() # function call within module
如何从文件testtwo.py导入Fu类,而不运行模块testtwo.py中调用的函数?我尝试通过检查名称来解决问题。当运行文件testone.py时,将导致shell打印出baz

如何在python中防止模块代码从模块执行

不能,当导入模块时,它会运行全局范围内调用的所有内容

您可以对其进行更改,以便轻松拨打或不拨打:

def main():
    Fu().baz()

if __name__ == '__main__':
    main()

然后,当您需要调用它时,您可以导入它并调用
main()
,当您将它作为主模块运行时,它仍然会自动运行。

根据定义,我猜这是一个重新发布。在这个问题上,您不能压制它——python模块就是这样定义的(即,它们在导入时执行)。如果你不喜欢这个功能,改变你的设计!它可能有相同的答案,但从语义上讲,这是一个不同的问题。@AaronHall我为什么按定义这么说。谢谢你明白我的意思