Day04 · 程序入门
阶段:阶段一 · 核心基础 | 前置:Day02 | 技术基准:Python 3.15.0
学习目标
- 掌握 Python 程序的两种运行方式:交互式 Shell 与脚本文件
- 写出人生中第一个真正的 Python 程序 Hello World
- 熟练使用 IDLE 的常用快捷键,提升输入效率
- 会写四种注释:单行注释、多行注释、文档字符串,并理解"编码注释在 Python 3 中已不再需要"
- 学会使用 Python 的帮助系统:官方文档、
help()、dir()、__doc__
一、两种运行方式
Day02 我们把 Python 3.15.0 装好了,也见过 IDLE。从今天开始,小嘉带你正式写程序。Python 运行一段代码有两种最基本的方式,必须分清楚。
1.1、交互式 Shell(REPL)
打开命令提示符(Win+R 输入 cmd),直接输入 python 回车,就进入了交互式 Shell ,提示符是 >>>:
text
Python 3.15.0 (tags/v3.15.0, ...) on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>
在 >>> 后面输入一行代码,回车立刻执行并显示结果。这种"读入(Read)---求值(Eval)---打印(Print)---循环(Loop)"的环境,简称 REPL。
python
>>> 1 + 2 * 3
7
>>> print("Hello, World!")
Hello, World!
>>> "跟小嘉学习 Python"
'跟小嘉学习 Python'
交互模式适合试一小段代码、验证一个想法 ,缺点是关掉窗口写过的代码就没了。输入 exit() 或按 Ctrl+Z 回车退出。
1.2、脚本文件(Script)
真正的项目要把代码保存在文件里。用任意文本编辑器(IDLE、VSCode、PyCharm 都行)写代码,保存为 *.py 文件,再用命令行运行:
bash
python hello.py
下面就是你的第一个脚本文件,保存为 hello.py:
python
# Author: XiaoJia
# 我的第一个 Python 脚本
print("Hello, World!")
print("跟小嘉学习 Python 程序设计")
命令行输出:
text
Hello, World!
跟小嘉学习 Python 程序设计
小嘉提醒:
print("...")。旧教程里的print "Hello"(不带括号)是 Python 2 的写法(Python 2 遗留,已移除),在 3.15 里会直接报SyntaxError。
二、Hello World 的仪式感
几乎所有编程语言的第一门课都从 Hello World 开始,这是程序员之间的传统。它虽然只有一行,却包含了"程序---输出"的完整闭环。
python
# 第一个程序:向世界问好
print("Hello, World!")
运行它,控制台(Console)就会打印出 Hello, World!。接下来我们在这个基础上加一点东西:
python
# Author: XiaoJia
# 带变量的 Hello World
name = "小嘉"
print("Hello, World!")
print("你好,", name)
print("欢迎来到 Python 3.15 的世界")
输出:
text
Hello, World!
你好, 小嘉
欢迎来到 Python 3.15 的世界
注意 print 可以一次打印多个值,默认用空格隔开(这个 sep 参数 Day10 细讲)。
三、IDLE 常用快捷键
IDLE 是官方自带的编辑器,Day02 已经打开过。记住下面这些快捷键,写代码会快很多:
| 快捷键 | 作用 |
|---|---|
| F5 | 运行当前脚本(Run Module) |
| Alt+P | 上一条历史命令(交互模式) |
| Alt+N | 下一条历史命令(交互模式) |
| Ctrl+N | 新建文件 |
| Ctrl+O | 打开文件 |
| Ctrl+S | 保存文件 |
| Ctrl+] / Ctrl+[ | 增加 / 减少缩进 |
| Alt+3 / Alt+4 | 注释 / 取消注释选中代码 |
| Alt+/ | 自动补全单词 |
| Ctrl+F | 查找 |
| Ctrl+H | 替换 |
| Ctrl+C | 中断正在运行的程序 |
| F1 | 打开 Python 官方帮助文档 |
python
# 在 IDLE 脚本模式下写好这段,按 F5 运行
for i in range(3):
print("按 F5 运行第", i + 1, "次")
输出:
text
按 F5 运行第 1 次
按 F5 运行第 2 次
按 F5 运行第 3 次
四、注释:写给人和未来的自己看的话
程序不是写完就不改了。为了让下次维护时(不管是别人还是三个月后的你)能看懂这段代码在干什么,就需要写注释(Comments)。注释会被解释器忽略,不会执行。
4.1、单行注释
以 # 开头,从 # 到行尾的内容都是注释:
python
# 这是一个单行注释,整行都是说明
print("hello, world") # 这是行尾注释,解释这行代码
4.2、多行注释(三引号)
要注释一大段内容时,用三个引号 """...""" 或 '''...''' 包起来:
python
"""
这是多行注释的第一行
这是多行注释的第二行
这段内容整体不会被执行
"""
print("多行注释结束,开始执行")
4.3、文档字符串(Docstring)
放在函数、类、模块开头的三引号字符串,叫文档字符串(Docstring) ,它不是普通注释------它会被 Python 保留下来,可以通过 help() 或 .__doc__ 读取,专门用来生成使用说明:
python
def greet(name):
"""打印一句问候语。
参数:
name: 问候对象的名字
"""
print(f"Hello, {name}!")
greet("Alice")
print(greet.__doc__) # 可以把文档字符串读出来
输出:
text
Hello, Alice!
打印一句问候语。
参数:
name: 问候对象的名字
4.4、关于"编码注释"(Python 3 已不再需要)
旧教程开头常看到这样两行:
python
#!/usr/bin/env python
# -*- coding: utf-8 -*-
- 第一行
#!/usr/bin/env python叫 shebang,只在 Linux/macOS 下直接运行脚本(./xxx.py)时告诉系统用哪个解释器,Windows 下无效,可写可不写。 - 第二行
# -*- coding: utf-8 -*-是编码声明------这是 Python 2 的遗留习惯(Python 2 默认 ASCII,源码里写中文必须声明)。
在 Python 3 中,源码文件默认就是 UTF-8 编码 ,这行编码注释不再是必须的(Python 2 遗留,现已冗余)。只要你的
.py文件以 UTF-8 保存,里面直接写中文完全没问题。本课程所有文件都按 UTF-8 保存。
五、帮助系统:不懂就问 Python 自己
写代码时最常遇到的问题是"这个函数怎么用?参数有哪些?"。小嘉推荐四个由浅入深的查帮助手段。
5.1、官方文档
最权威的资料永远是官方文档:https://docs.python.org/3/ 。左侧是目录,右上角可切换版本,搜索框支持全文检索。
5.2、help():查看对象的完整说明
在交互模式里输入 help(对象名),就能看到它的参数、用法、注意事项:
python
help(print) # 查看 print 函数的帮助
help(str) # 查看字符串类型的完整帮助
help("modules") # 列出当前环境已安装的所有模块名
按空格翻页,按 q 退出帮助(进入 less 分页器)。
5.3、dir():列出对象有哪些属性和方法
dir() 能列出一个对象"能做什么",是探索新对象的利器:
python
# 查看字符串 str 支持的所有方法名
print(dir(str))
输出(节选):
text
['__add__', '__class__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'find', 'format', 'index', 'join', 'lower', 'lstrip', 'replace', 'split', 'strip', 'upper', ...]
下划线开头的(如 __add__)是内部魔术方法,先不管;其余如 find、split、replace 就是字符串常用方法(Day08 细讲)。
5.4、obj.__doc__:只看核心一句话
help() 内容很长,只想看一句话说明时,直接取对象的文档字符串:
python
print(print.__doc__)
输出(节选):
text
Prints the values to a stream, or to sys.stdout by default.
sep
string inserted between values, default a space.
end
string appended after the last value, default a newline.
file
a file-like object (stream); defaults to the current sys.stdout.
flush
whether to forcibly flush the stream.
5.5、BNF 语法与 Python 的多种实现(拓展了解)
- **BNF(Backus-Naur Form,巴科斯范式)**是用来形式化描述编程语言语法的记号法。约定:
<>必选、[]可选、{}零次或多次、|表示"或"、::=表示"被定义为"。官方语言参考文档就是用 BNF 写的,以后深入读文档时会遇到。 - CPython :用 C 语言写的官方 Python 实现,也是我们每天用的这个。此外还有 PyPy (自带 JIT,运行更快)、Jython (跑在 JVM 上)、IronPython(跑在 .NET 上)等。同一门语言、不同的实现,绝大多数代码可以通用。
练习题
- 在命令行用交互模式分别计算
2 ** 10、7 / 2、7 // 2,把结果记下来,猜猜/和//的区别。 - 新建
hello.py,用至少 3 行注释(单行、三引号多行、文档字符串各一种),运行后输出你的名字和一句自我介绍。 - 在 IDLE 里练习快捷键:用 Alt+P/Alt+N 翻历史命令,用 Alt+3/Alt+4 注释、取消注释一段代码,用 F5 运行。
- 在交互模式里执行
help(input),读一遍说明,然后执行dir(list),列出你能看懂的 5 个列表方法名。 - 思考题:为什么 Python 3 的源码默认 UTF-8 后,
# -*- coding: utf-8 -*-这行注释就变成可有可无了?如果你的.py文件用 GBK 保存,里面写中文会怎样?
小结
- Python 有两种运行方式:交互式 Shell(REPL,适合试小段代码)和脚本文件(
.py,用python 文件名.py运行)。 - Hello World 是程序入门的传统仪式,核心是
print()函数;print在 Python 3 中必须带括号。 - IDLE 快捷键:F5 运行、Alt+P/N 翻历史、Alt+3/4 注释切换、F1 打开官方文档。
- 注释四种:
#单行、"""..."""多行、函数/类开头的文档字符串(可用help()/__doc__读取);编码注释# -*- coding -*-是 Python 2 遗留,3 中默认 UTF-8 已不需要。 - 查帮助四件套:官方文档 docs.python.org →
help(对象)→dir(对象)列方法 →对象.__doc__看一句话。 - 拓展:BNF 是描述语法的形式化记号;CPython 是官方实现,PyPy/Jython/IronPython 是其他实现。
扩展阅读
- 官方 Python 教程(入门必读):https://docs.python.org/3/tutorial/
- 内置函数参考(help/dir 都在这):https://docs.python.org/3/library/functions.html
- 源目录教材参考:《跟小嘉学习Python 程序设计》一、Python 开发环境介绍和搭建.md 第三章(Python 程序入门);python写一个简单的程序.docx