- 本节目标:写出第一个可运行的 Python 文件,并理解
print()、字符串、变量、函数和程序入口
1. 本节要完成什么
本节新增文件:
text
projects/00-python-dev-workbench/hello_python.py
运行命令:
powershell
.\.venv\Scripts\python.exe projects/00-python-dev-workbench/hello_python.py
运行结果:
text
Hello, Python!
当前学习者:Python 初学者
当前任务:00-03 写第一个 Python 程序
这几行内容会按照代码编写顺序依次显示。
2. Python 文件是什么
2.1 概念
Python 文件通常以 .py 结尾。它是一个普通文本文件,里面写的是 Python 代码。
例如:
text
hello_python.py
2.2 作用
.py 文件用于保存程序逻辑。这样代码可以反复运行、提交到 Git、被别人阅读和维护。
2.3 原理
当我们运行:
powershell
.\.venv\Scripts\python.exe projects/00-python-dev-workbench/hello_python.py
Python 会做这些事:
- 启动
.venv里的 Python 解释器。 - 读取
hello_python.py文件。 - 从上到下执行文件里的代码。
- 遇到
print()时,把内容输出到命令行。
3. print() 是什么
3.1 概念
print() 是 Python 内置函数,用来把内容显示到命令行。
示例:
python
print("Hello, Python!")
3.2 作用
print() 常用于:
- 显示程序结果。
- 学习阶段观察代码是否运行。
- 简单调试。
- 给命令行用户输出提示。
3.3 原理
print() 会把括号里的内容转成文本,然后写到标准输出。
标准输出可以先理解成"命令行屏幕"。
3.4 常见坑
- 忘记写引号:
print(Hello)会被 Python 当成变量名。 - 中文括号写成
print("你好"),Python 不认识中文括号。 - 引号不成对:
print("你好)会报语法错误。 - 把
print写成printf,Python 默认没有这个函数。
4. 字符串是什么
4.1 概念
字符串就是文本数据。Python 里通常用引号包起来:
python
"Hello, Python!"
"Python 初学者"
"00-03"
4.2 作用
字符串用于表示:
- 用户名。
- 提示语。
- 文件路径。
- 网页内容。
- JSON 文本。
- 日志消息。
4.3 原理
引号告诉 Python:这里是一段文本,不是变量名,也不是命令。
例如:
python
message = "Hello, Python!"
这行代码的意思是:把文本 "Hello, Python!" 保存到变量 message 里。
4.4 常见坑
- 字符串忘记加引号。
- 前后引号类型不匹配。
- Windows 路径里的反斜杠可能被当成转义字符。
本节代码顶部 docstring 使用了 r"""...""",其中 r 表示 raw string,也就是原始字符串。这样 Windows 路径里的 \ 不容易触发转义警告。
5. 变量是什么
5.1 概念
变量是给数据起的名字。
示例:
python
message = "Hello, Python!"
可以理解为:
text
变量名 message -> 保存文本 "Hello, Python!"
5.2 作用
变量让代码更容易阅读和复用。
如果不使用变量,代码可能是:
python
print("Hello, Python!")
使用变量后:
python
message = "Hello, Python!"
print(message)
这样可以先给数据命名,再在后面使用它。
5.3 原理
Python 执行赋值语句时,会先创建右边的数据,再把左边的名字绑定到这个数据上。
python
learner = "Python 初学者"
意思是:创建字符串 "Python 初学者",并让 learner 这个名字指向它。
5.4 常见坑
- 变量名不能随便加空格,例如
user name不合法。 - 变量名不能以数字开头,例如
1name不合法。 - 变量名区分大小写,
name和Name是两个不同变量。 - 变量要先定义再使用。
6. f-string 是什么
6.1 概念
f-string 是 Python 里格式化字符串的一种写法。
示例:
python
learner = "Python 初学者"
print(f"当前学习者:{learner}")
输出:
text
当前学习者:Python 初学者
6.2 作用
f-string 用于把变量值放进字符串里。
6.3 原理
字符串前面的 f 告诉 Python:请把 {} 里的表达式计算出来,再放进字符串。
python
f"当前任务:{stage} 写第一个 Python 程序"
如果 stage = "00-03",最后会变成:
text
当前任务:00-03 写第一个 Python 程序
6.4 常见坑
- 忘记在字符串前加
f,导致{learner}原样输出。 - 花括号没有成对。
- 在
{}里写了不存在的变量。
7. 函数是什么
7.1 概念
函数是一组有名字的代码。
本节代码里有:
python
def main() -> None:
...
main 是函数名,函数体是缩进进去的代码。
7.2 作用
函数能把代码组织起来:
- 让程序结构更清楚。
- 让一段逻辑可以被重复调用。
- 让后续测试更方便。
- 让代码更容易阅读。
7.3 原理
定义函数时,函数体不会立刻执行。
只有调用函数时才会执行:
python
main()
所以:
python
def main() -> None:
print("Hello")
只是定义了一个函数。真正执行输出的是:
python
main()
7.4 常见坑
- 忘记函数体缩进。
- 只定义函数,不调用函数。
- 函数名拼写前后不一致。
- 把中文冒号写成
:,Python 需要英文冒号:。
8. if __name__ == "__main__" 是什么
8.1 概念
这是 Python 常见的程序入口写法:
python
if __name__ == "__main__":
main()
8.2 作用
它用于区分两种情况:
- 这个文件是被直接运行。
- 这个文件是被其他文件导入。
当文件被直接运行时,__name__ 的值是 "__main__",于是会执行 main()。
8.3 原理
你现在可以先记住:
text
直接运行本文件 -> __name__ 等于 "__main__" -> 执行 main()
被其他文件 import -> __name__ 不是 "__main__" -> 不自动执行 main()
8.4 常见坑
__name__左右各有两个下划线,不能少。"__main__"也有前后两个下划线。==是比较是否相等,不是赋值。- 这一行末尾要有英文冒号。
9. 本节完整代码讲解
本节文件:
text
projects/00-python-dev-workbench/hello_python.py
核心结构:
python
r"""文件说明。"""
def main() -> None:
message = "Hello, Python!"
learner = "Python 初学者"
stage = "00-03"
print(message)
print(f"当前学习者:{learner}")
print(f"当前任务:{stage} 写第一个 Python 程序")
print("这几行内容会按照代码编写顺序依次显示。")
if __name__ == "__main__":
main()
运行顺序:
- Python 先读取文件顶部说明。
- 遇到
def main(),知道这里定义了一个函数,但先不执行函数体。 - 继续往下,遇到
if __name__ == "__main__"。 - 因为当前是直接运行本文件,所以条件成立。
- 调用
main()。 - 进入函数内部,从上到下执行变量赋值和
print()。
10. 当前项目中的应用
这个文件虽然很小,但已经建立了后续项目的基本写法:
- 文件顶部写用途说明。
- 主要逻辑放进
main()。 - 使用
if __name__ == "__main__"作为入口。 - 用变量保存数据。
- 用
print()输出结果。 - 用虚拟环境里的 Python 运行。
后面命令行任务管理器、Web 服务、爬虫脚本都会继续沿用这种"入口清晰、职责清楚"的写法。
11. 课后复盘
你现在要记住:
.py文件是 Python 代码文件。- Python 会从上到下读取和执行代码。
print()用来输出内容。- 字符串是文本,要用引号包起来。
- 变量是数据的名字。
- f-string 可以把变量放进字符串。
- 函数是一组有名字的代码。
if __name__ == "__main__"是常见程序入口写法。