Python模块导入疑问:仅导入func1却输出‘the end’的原因
为啥导入单个函数还会输出'the end'?
这是Python模块导入的正常行为:只要你从某个模块导入任何内容(哪怕只是一个函数),Python都会先完整运行一遍整个模块的代码,之后才会把你要的函数/对象导入到当前脚本里。
你在module1.py里写的print("the end")是模块的顶层代码(没放在函数、类或者条件判断里),所以在模块被导入的过程中,这行代码会被直接执行,也就出现了你看到的输出。
怎么让这行代码只在直接运行模块时执行?
把print("the end")放到if __name__ == "__main__":这个判断块里就行,修改后的module1.py代码如下:
def func1(num): # 这里写你的func1逻辑 print(f"func1运行,参数:{num}") if __name__ == "__main__": print("the end")
这样一来,只有当你直接运行module1.py(比如在终端敲python module1.py)时,才会输出'the end';当其他脚本导入这个模块时,这行代码不会被触发。
内容的提问来源于stack exchange,提问作者Chya
相关产品推荐
相关产品推荐

