当前位置:首页>python>Python中的“main函数”是咋写的

Python中的“main函数”是咋写的

  • 2026-10-11 08:07:06
Python中的“main函数”是咋写的

Python中的“main函数”是咋写的

学过C、C++、Java等编译型语言的应该都清楚,不管你的代码怎么写的,都需要写一个main函数,用来指示程序的入口,或说程序最开始应该从哪里开始执行。例如如下的C++代码:

# include <iostream>using namespace std;int main(){    cout << "Hello, World!" << endl;}

上面的代码指示计算机,从int main()这里开始执行,输出内容“Hello, World!”。而Python显然没那么啰嗦,因为你大概率是这样实现输出内容的:

print("Hello, World!")

没有大括号、没有明确main入口、一行代码完事,怎一个简单粗暴了得。

但随着使用Python的过程不断深入,迟早会在别人的源码中看到一个类似main.py的文件,好像是在指示这是一个main入口,而里面也赫然写了一行熟悉又陌生的代码,仿佛这就是整个Python程序的入口:

if __name__ == '__main__':

别的语言为什么会有main?

先跳出Python,不管是C还是Java,它们要求程序都必须有一个明确的入口。因为电脑脑子是一根筋,你不告诉它从哪开始跑代码,它就不知道干什么。所以语言设计者们就规定:main函数是程序唯一的、固定的启动键。

于是执行程序的流程变为:

发出程序运行指令 → 找main的位置 → 进入main并顺序执行其中的代码 → 程序结束。

但是!Python偏不按套路出牌。Python的逻辑很直白:

打开文件 → 从上读到下 → 读到哪执行代码到哪。

这也是很多解释性语言的代码运行特点,例如Shell、Lua等语言。

可自由过头,总会有出bug的时候,这时候,if __name__ == '__main__'就出现了,弥补Python没有main入口的缺陷。

if __name__ == '__main__' 的作用

我们把Python代码文件抽象成你的作业,它有两种用处:

  • 自己用来上交: 你写的很认真,解题思维清晰,逻辑缜密;

  • 借别人抄: 班上总有同学借你作业抄,他们只想抄你解题过程的关键部分,不想抄的一模一样被老师发现。

而 if __name__ == '__main__',就是作业下的一行免责声明:

「此部分是我作业的专属写法,你照抄必背发现!!!」

是不是一下子就明白了?说白了就是:区分文件是自己运行,还是被别人借用。

举个栗子说明一下

新建一个homework.py文件,写上以下代码:

def do_homework():print("Step-1: because A + B = C")print("Step-2: and A * B = D")print("Step-3: so, E = m * c^2")# 免责声明if __name__ == '__main__':print("Name: Zhang-3, Class: SSR")# 做作业总是美言老师一句,而其他同学不屑于这么干print("My teacher, you're so beautiful today!")    do_homework()

运行代码,你的输出是:

Name: Zhang-3, Class: SSRMy teacher, you're so beautiful today!Step-1: because A + B = CStep-2: and A * B = DStep-3: so, E = m * c^2

这个时候,文件执行者是主角本人,判断条件成立,if里面的代码全部执行。

再建一个copy_homework.py,是你同学抄你的作业:

import copy_homeworkprint("I've copied homework, yeah!")

运行代码,输出:

I've copied homework, yeah!

这时,你会发现那些原本的个人信息、拍马屁发言全都不会出现。

这就是这行if代码的核心作用:被别人导入调用时,隐藏内部测试代码,只保留关键的函数、类等内容。

如果没有这行if,按照Python的逻辑,需要先执行完homework.py中的所有代码,那么你抄作业必露馅。

一定要写这行if吗?

对于初学者、或者只写小脚本,完全可以不写。

但如果你想做项目、写工具、封装代码,那么这行代码是必然的:

  1. 隔离测试代码: 用来隔离自己写代码的测试语句,别人导入文件时不会乱执行。
  2. 规范代码结构: 把执行逻辑放到if内部,函数、类在外面,代码条理更加清晰。

往期回顾:

Python学习笔记——从入门到报废(二十八、面向对象编程(四))

2026年5月第3周GitHub热点的前5项目

PyEcharts攻略总结篇|Part.12

用PyEcharts画些炫酷图表|PyEcharts教程Part.11

Python学习笔记——从入门到报废(二十七、面向对象编程(三))

最新文章

随机文章