理解python的if name == main

一、没有加 if __name__ == "__main__"

python复制编辑# demo.py

print("脚本开始执行")

def say_hi():
print("Hi!")

say_hi()

👉 结果:

  • 直接运行:会输出

    复制编辑脚本开始执行
    Hi!
  • import demo 导入:也会自动输出上面的内容,因为 print()say_hi() 是顶层代码,导入时就会执行。


二、加了 if __name__ == "__main__"

python复制编辑# demo.py

print("模块被加载了")

def say_hi():
print("Hi!")

if __name__ == "__main__":
print("脚本开始执行")
say_hi()

👉 结果:

  • 直接运行:

    复制编辑模块被加载了
    脚本开始执行
    Hi!
  • import demo 导入:

    复制编辑
    模块被加载了

    ✅ 只执行了最外层的 print()if __name__ == "__main__": 里的内容不会自动跑。


✅ 小总结:

  • 你写在 if __name__ == "__main__": 外面 的代码,在导入时就会执行。
  • 你写在 if __name__ == "__main__": 里面 的代码,只在直接运行这个脚本时执行。

所以如果你希望脚本被导入时“干净点”,就别把主逻辑写在外面,而是包在 if __name__ == "__main__" 里。


你想不想试试自己写一个脚本,然后新建一个文件导入它,感受一下这种差异?我可以帮你搭个结构~