如何防止在Python中从导入的模块中执行模块代码?

13 浏览
0 Comments

如何防止在Python中从导入的模块中执行模块代码?

当我有以下文件时:\ntestone.py\n

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

\ntesttwo.py\n

class Fu:
    def baz(self):
        print 'baz'
Fu().baz() # 在模块内调用函数

\n如何在不运行模块testtwo.py中的函数的情况下,从文件testtwo.py导入类Fu?我尝试通过检查名称来解决这个问题。如果运行文件testone.py,将导致shell打印出baz。

0
0 Comments

在Python中,当你导入一个模块时,它会运行全局范围内的所有代码。所以没有办法阻止模块中的代码执行。但是,你可以通过改变代码的结构来实现需要时调用或不调用的效果。

首先,你可以将模块中的代码放在一个名为main()的函数中:

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

然后,你可以使用if __name__ == '__main__':语句来判断模块是作为主模块运行还是被导入到其他模块中。如果模块作为主模块运行,那么调用main()函数。

下面是一个示例代码:

def main():
    Fu().baz()
    
if __name__ == '__main__':
    main()

当你想要调用该模块时,导入它并调用main()函数。在你运行该模块作为主模块时,它仍然会自动运行。

通过这种方式,你可以控制模块中代码的执行,只在需要时调用。

0