在python中,如果自己封装的库文件中有函数外的语句,那么这些语句是会在库函数被导入时自动执行的,这样就会出现一些奇怪的问题,一个例子如下所示。目录结构如下:
A.py
B.py
B.py中的内容如下:
def print_B():
print("B")
print("starting B")
A.py中使用import导入print_B()方法:
from B import print_B
print_B()
结果如下:
starting B
B
可以发现B.py中的函数外语句是会自动先执行的。但有时候我们确实希望直接运行封装的库能够执行某些功能,但又不希望这些功能在被import的时候被触发,这个时候,就可以把这部分功能显式的放在main方法中。修改后的B.py如下所示:
def print_B():
print("B")
if __name__ == "__main__":
print("starting B")
此时运行A.py,结果如下:
B