写Python的人,十有八九见过这行代码:
if __name__ == "__main__":
![]()
main()
看起来像个神秘仪式。其实逻辑很朴素:它让同一段代码在两种场景下表现不同——直接运行时执行,被导入时静默。
先拆一个常见误会。"__main__"跟文件名里的"main"没关系。你完全可以执行python app.py或python calculadora.py,哪个文件被直接运行,哪个文件里的__name__就是"__main__"。这是Python的运行时赋值,不是命名约定。
每个.py文件都自带一个隐藏变量__name__。直接执行时,它等于"__main__";被别的文件import时,它等于模块名本身。做个实验:建个calculadora.py,里面只写print(__name__)。终端运行python calculadora.py,输出是__main__。再建个app.py写import calculadora,运行后输出变成calculadora。
这个切换机制解决的是代码复用与测试的冲突。把功能函数和调试代码写在同一个文件里,不加判断的话,别人import你的模块时,调试代码也会跟着跑。套上if __name__ == "__main__":,就像给调试代码加了把锁——只有直接敲门的人才触发,翻窗户进来的(import)看不到。
实际写法通常长这样:上面定义函数,下面放测试或入口逻辑。文件既当工具库又当独立程序,不用拆成两个文件维护。很多Python标准库的源码也是这个结构,翻一翻就能找到同款模式。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.