You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么从Python文件导入函数时,文件内非函数的顶层代码会被执行?

问题原因

  • Python在执行import导入操作时,会完整执行被导入模块的所有顶层代码,不会只执行你指定导入的函数部分。
  • 你写在demostration_1.py里的print('hello world')属于顶层代码(既没有定义在函数、类内部,也没有被if __name__ == '__main__'判断包裹),所以当demostration_2.py导入adult函数时,这行打印代码自然就会被执行,才会出现额外的hello world输出。

解决方法

如果希望某段代码只有直接运行当前文件时才执行,被其他模块导入时不执行,只需要把这部分代码放到if __name__ == '__main__'的判断块里即可。修改后的demostration_1.py代码如下:

def adult(x):
    return x >= 18

if __name__ == '__main__':
    print('hello world')
  • 当直接运行demostration_1.py时,内置变量__name__的值会是'__main__',判断成立,打印语句会正常执行
  • 当demostration_1.py作为模块被其他文件导入时,__name__的值会变成模块名'demostration_1',判断不成立,打印语句就不会执行了

内容的提问来源于stack exchange,提问作者Daniel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 09:18:03