Python 简介:快速上手这门强大的编程语言
在当今数字化浪潮汹涌的时代,编程能力正变得越来越重要。而在众多编程语言中,Python 无疑是最受瞩目、增长最快的明星之一。无论你是学生、科研人员、数据分析师、Web 开发者,还是仅仅对创造和自动化充满好奇,Python 都能为你打开新世界的大门。
本文将带你踏上 Python 学习之旅。我们将深入探讨 Python 为何如此受欢迎,如何安装和设置你的开发环境,并通过大量的代码示例,循序渐进地掌握 Python 的核心概念。读完这篇文章,你将对 Python 有一个全面而深入的理解,并具备编写简单程序的能力,为未来的学习和实践打下坚实基础。
第一章:为何选择 Python?Python 的魅力所在
在我们开始学习如何编写 Python 代码之前,先来了解一下 Python 为什么如此受欢迎。是什么让它成为众多开发者和公司的首选语言?
- 易学易读: 这是 Python 最突出的优点之一。Python 的语法设计得非常接近自然语言,代码结构清晰,强制使用缩进(而非大括号)来表示代码块,这使得 Python 代码具有极高的可读性。对于初学者来说,这意味着你可以更快地理解和编写代码,减少犯错的可能性。
- 用途广泛: Python 是一门“全能型”语言,几乎可以在所有领域找到它的身影:
- Web 开发: Django, Flask 等强大的框架让构建 Web 应用变得高效便捷。
- 数据科学与机器学习: NumPy, Pandas, Scikit-learn, TensorFlow, PyTorch 等库是该领域的基石。
- 自动化与脚本: 编写自动化脚本来处理文件、管理系统、网络操作等是 Python 的强项。
- 科学计算与数值分析: SciPy 等库提供了丰富的科学计算工具。
- 人工智能: Python 是 AI 领域的首选语言,拥有丰富的算法和模型库。
- 教育: 由于其易学性,Python 被广泛用于编程入门教学。
- 游戏开发: 虽然不如 C++/C# 常用,但也有 Pygame 等库可用于简单的游戏开发。
- 桌面 GUI: PyQt, Tkinter 等库可以创建桌面应用程序。
- 强大的社区支持: Python 拥有一个庞大、活跃且友好的全球社区。当你遇到问题时,很容易在网上找到解决方案、教程和帮助。丰富的社区资源是学习路上宝贵的财富。
- 丰富的第三方库: Python 的生态系统极其繁荣。通过 pip 这个包管理器,你可以轻松安装和使用成千上万个由社区贡献的库,这些库覆盖了几乎所有你能想到的功能,极大地提高了开发效率。
- 跨平台性: Python 代码可以在 Windows, macOS, Linux 等多种操作系统上运行,无需修改。这使得开发者可以轻松地在不同环境下部署和共享代码。
- 开源免费: Python 是开源的,任何人都可以免费使用和分发它,这降低了学习和使用的门槛。
综上所述,Python 以其易学性、强大的功能、广泛的应用领域和活跃的社区,成为了现代编程领域不可或缺的一部分。现在,让我们开始动手吧!
第二章:磨刀不误砍柴工——设置你的 Python 开发环境
在开始编写代码之前,你需要在你的电脑上安装 Python 解释器。解释器负责读取你的 Python 代码并将其转换为计算机可以执行的指令。
-
下载 Python:
- 访问 Python 官方网站:https://www.python.org/downloads/
- 下载适合你操作系统的最新稳定版本(通常是 Python 3.x 系列,因为 Python 2 已停止维护)。
-
安装 Python:
- Windows: 运行下载的安装程序。非常重要的一步是,在安装过程中勾选 “Add Python to PATH”(将 Python 添加到系统环境变量)。 这将允许你在命令行中直接运行
python
命令。选择自定义安装可以调整安装路径,但对于初学者,默认选项通常足够。 - macOS: macOS 自带 Python 2,但我们需要 Python 3。你可以下载官方安装包进行安装,或者使用 Homebrew(一个包管理器):打开终端,运行
brew install python3
。使用 Homebrew 安装会自动处理 PATH 变量。 - Linux: 大多数 Linux 发行版都预装了 Python,但可能是 Python 2 或较旧的 Python 3。你可以使用发行版的包管理器来安装最新版本。例如,在 Debian/Ubuntu 上使用
sudo apt update && sudo apt install python3
,在 Fedora 上使用sudo dnf install python3
。
- Windows: 运行下载的安装程序。非常重要的一步是,在安装过程中勾选 “Add Python to PATH”(将 Python 添加到系统环境变量)。 这将允许你在命令行中直接运行
-
验证安装:
- 打开命令行或终端。
- 输入
python --version
(或python3 --version
在某些系统上)。如果看到安装的 Python 版本号(例如Python 3.10.5
),说明安装成功。 - 输入
pip --version
(或pip3 --version
)。pip
是 Python 的包管理器,它应该随 Python 一起安装。如果看到版本号,说明 pip 也安装成功。
-
选择你的代码编辑器/IDE (集成开发环境):
虽然你可以在任何文本编辑器(如记事本)中编写 Python 代码,但专业的代码编辑器或 IDE 会提供语法高亮、代码补全、调试等功能,极大地提高开发效率。一些流行的选择包括:- IDLE: Python 官方自带的简单 IDE,适合初学者入门。
- VS Code (Visual Studio Code): 免费、轻量级、功能强大的编辑器,通过安装 Python 扩展包可以变成一个出色的 Python IDE。
- PyCharm: JetBrains 出品的专业级 Python IDE,功能非常强大(有免费的社区版和付费的专业版)。
- Sublime Text, Atom: 也是不错的通用代码编辑器,支持 Python。
选择一个你觉得舒适和易用的工具即可。对于初学者,VS Code 或 PyCharm 社区版是很好的选择。
- 理解虚拟环境 (Virtual Environments – 可选但推荐):
在实际开发中,不同的项目可能依赖于不同版本的 Python 库。为了避免库版本冲突,推荐为每个项目创建一个独立的虚拟环境。虚拟环境是一个隔离的 Python 环境,拥有自己独立的 Python 解释器和库安装目录。- Python 3.3+ 内置了
venv
模块来创建虚拟环境。 - 在项目目录下打开终端,运行
python -m venv myenv
(myenv
是你给环境起的名字)。 - 激活虚拟环境:
- Windows:
.\myenv\Scripts\activate
- macOS/Linux:
source myenv/bin/activate
- Windows:
- 激活后,终端提示符前会出现环境名称 (例如
(myenv)
)。此时安装的库 (pip install ...
) 将只存在于这个环境中。 - 退出虚拟环境:
deactivate
。
虽然对于第一个简单的程序可能不是必需的,但养成使用虚拟环境的习惯是非常重要的。
- Python 3.3+ 内置了
现在,你的 Python 开发环境已经准备就绪,是时候开始写代码了!
第三章:你的第一个 Python 程序——Hello, World!
按照传统,我们的第一个程序将是打印 “Hello, World!”。
- 打开你的代码编辑器。
- 创建一个新文件。
-
输入以下一行代码:
python
print("Hello, World!") -
将文件保存为
hello_world.py
(.py
是 Python 文件的标准扩展名)。选择一个容易找到的目录,比如你的用户目录下的一个新文件夹。 - 运行程序:
- 通过终端/命令行:
- 打开终端或命令行。
- 使用
cd
命令切换到你保存hello_world.py
文件的目录。例如,如果保存在~/Documents/PythonProjects
目录下,输入cd Documents/PythonProjects
。 - 运行命令
python hello_world.py
(或python3 hello_world.py
)。 - 你应该在终端看到输出:
Hello, World!
- 通过 IDE/编辑器: 大多数 IDE 或编辑器都有一个“运行”按钮或菜单项,可以直接执行当前文件。
- 通过终端/命令行:
恭喜你!你已经成功运行了你的第一个 Python 程序。print()
是 Python 中一个非常常用的内置函数,用于将内容输出到控制台。
你也可以直接在 Python 解释器的交互模式(REPL – Read-Eval-Print Loop)中运行代码:
* 打开终端,输入 python
(或 python3
) 并回车。
* 你将看到 >>>
提示符。
* 输入 print("Hello, World!")
并回车。
* 结果会立即显示出来。
交互模式对于测试简短代码片段或探索 Python 特性非常方便。
第四章:Python 基础——构建代码的基石
现在我们已经迈出了第一步,接下来学习 Python 的一些基本概念。
4.1 变量与数据类型
变量用于存储数据。在 Python 中,你无需提前声明变量的类型,Python 会根据你赋给它的值自动确定类型(这就是动态类型语言)。
变量赋值:
“`python
name = “Alice” # 字符串 (String)
age = 30 # 整数 (Integer)
height = 1.75 # 浮点数 (Float)
is_student = True # 布尔值 (Boolean)
score = None # 空值 (NoneType)
print(name)
print(age)
print(height)
print(is_student)
print(score)
你可以使用 type() 函数查看变量的类型
print(type(name))
print(type(age))
print(type(height))
print(type(is_student))
print(type(score))
“`
常用的基本数据类型:
- 整数 (int): 正数、负数和零,没有小数部分。例如:
10
,-5
,0
。 - 浮点数 (float): 带有小数部分的数字。例如:
3.14
,-0.5
,2.0
。 - 字符串 (str): 用单引号或双引号括起来的文本序列。例如:
"Hello"
,'Python'
,"你好"
。- 多行字符串可以用三引号
'''...'''
或"""..."""
定义。
- 多行字符串可以用三引号
- 布尔值 (bool): 只有两个值:
True
和False
(注意首字母大写)。通常用于逻辑判断。 - 空值 (NoneType): 表示没有值。用关键字
None
表示。
4.2 基本运算符
Python 支持常见的算术、比较和逻辑运算符。
算术运算符:
“`python
a = 10
b = 3
print(a + b) # 加法: 13
print(a – b) # 减法: 7
print(a * b) # 乘法: 30
print(a / b) # 除法: 3.333… (结果总是浮点数)
print(a // b) # 整除: 3 (结果是整数,向下取整)
print(a % b) # 取模 (余数): 1
print(a ** b) # 幂运算 (a的b次方): 1000
“`
字符串运算:
python
str1 = "Hello"
str2 = "World"
print(str1 + " " + str2) # 字符串拼接: "Hello World"
print(str1 * 3) # 字符串重复: "HelloHelloHello"
比较运算符: 返回布尔值 (True
或 False
)。
“`python
x = 5
y = 10
print(x > y) # 大于: False
print(x < y) # 小于: True
print(x == y) # 等于: False
print(x != y) # 不等于: True
print(x >= y) # 大于等于: False
print(x <= y) # 小于等于: True
“`
逻辑运算符: and
, or
, not
。用于组合布尔表达式。
“`python
p = True
q = False
print(p and q) # 逻辑与: False (只有当 p 和 q 都为 True 时才为 True)
print(p or q) # 逻辑或: True (p 和 q 任意一个为 True 时就为 True)
print(not p) # 逻辑非: False (取反)
“`
4.3 注释
注释是代码中不会被执行的部分,用于解释代码的功能或用途,提高代码的可读性。
- 单行注释以
#
开头。 - 多行注释可以使用三引号
'''...'''
或"""..."""
。
“`python
这是一个单行注释
“””
这是
一个
多行注释
“””
print(“This line is executed.”) # 这行代码会被执行,后面的注释不会
“`
养成写注释的好习惯非常重要!
第五章:控制流程——让程序“思考”和“行动”
控制流程语句决定了程序执行的顺序。最常见的是条件语句(if/elif/else)和循环语句(for/while)。
5.1 条件语句 (if, elif, else)
用于根据条件的真假来执行不同的代码块。
注意: Python 使用缩进来表示代码块的层级,而不是大括号 {}
。这是 Python 代码易读性的重要原因。通常使用 4 个空格作为缩进。
“`python
score = 85
if score >= 90:
print(“优秀”)
elif score >= 75:
print(“良好”)
elif score >= 60:
print(“及格”)
else:
print(“不及格”)
简单的 if 语句
age = 18
if age >= 18:
print(“你已成年”)
if/else 语句
temperature = 25
if temperature > 30:
print(“天气很热”)
else:
print(“天气还行”)
“`
5.2 循环语句 (for, while)
循环用于重复执行一段代码。
for 循环: 常用于遍历序列(如字符串、列表、元组等)或执行固定次数的循环。
“`python
遍历字符串
for char in “Python”:
print(char)
遍历列表
fruits = [“apple”, “banana”, “cherry”]
for fruit in fruits:
print(fruit)
使用 range() 函数进行定次循环
range(5) 生成 0, 1, 2, 3, 4
for i in range(5):
print(“循环次数:”, i)
range(start, stop)
for i in range(2, 5): # 生成 2, 3, 4
print(“i =”, i)
range(start, stop, step)
for i in range(1, 10, 2): # 生成 1, 3, 5, 7, 9
print(“步长为2:”, i)
“`
while 循环: 当条件为真时,重复执行代码块。
python
count = 0
while count < 5:
print("Count:", count)
count += 1 # 记得更新条件,否则可能造成死循环!
break 和 continue:
* break
: 立即终止当前循环。
* continue
: 跳过当前循环中剩余的代码,开始下一次循环。
“`python
break 示例
for i in range(10):
if i == 5:
break # 当 i 等于 5 时,循环停止
print(i) # 输出 0, 1, 2, 3, 4
print(“-” * 10) # 分隔线
continue 示例
for i in range(10):
if i % 2 == 0: # 如果 i 是偶数
continue # 跳过当前循环,不打印偶数
print(i) # 只输出奇数 1, 3, 5, 7, 9
“`
第六章:数据结构——组织和管理信息
除了基本数据类型,Python 还提供了多种强大的内置数据结构来组织和管理大量数据。
6.1 列表 (List)
列表是 Python 中最常用的数据结构,用于存储有序的可变(可修改)元素集合。列表中的元素可以是不同类型的。
“`python
创建列表
my_list = [1, 2, “three”, True, 3.14]
访问元素 (索引从 0 开始)
print(my_list[0]) # 输出 1
print(my_list[2]) # 输出 “three”
print(my_list[-1]) # 访问最后一个元素: 3.14
print(my_list[-2]) # 访问倒数第二个元素: True
切片 (获取子列表)
print(my_list[1:4]) # 获取索引 1 到 3 的元素 (不包含索引 4): [2, “three”, True]
print(my_list[:3]) # 从开头到索引 2: [1, 2, “three”]
print(my_list[2:]) # 从索引 2 到结尾: [“three”, True, 3.14]
print(my_list[:]) # 复制整个列表
print(my_list[::2]) # 每隔一个元素取一个: [1, “three”, 3.14]
修改列表元素
my_list[0] = 100
print(my_list) # 输出 [100, 2, “three”, True, 3.14]
添加元素
my_list.append(“new_item”) # 在末尾添加
print(my_list)
my_list.insert(1, “inserted”) # 在指定位置插入 (索引 1)
print(my_list)
删除元素
my_list.remove(“three”) # 按值删除第一个匹配项
print(my_list)
del my_list[0] # 按索引删除
print(my_list)
popped_item = my_list.pop() # 删除并返回最后一个元素
print(popped_item)
print(my_list)
popped_item_at_index = my_list.pop(1) # 删除并返回指定索引的元素
print(popped_item_at_index)
print(my_list)
其他常用列表方法
print(len(my_list)) # 列表长度
print(“new_item” in my_list) # 检查元素是否存在
“`
6.2 元组 (Tuple)
元组与列表类似,但它是不可变(不可修改)的有序集合。元组使用圆括号 ()
定义。
“`python
创建元组
my_tuple = (1, “two”, 3.0)
访问元素和切片 (与列表类似)
print(my_tuple[0])
print(my_tuple[1:3])
元组不可变,以下操作会报错
my_tuple[0] = 100 # TypeError
只有单个元素的元组需要加逗号,以区分普通括号
single_item_tuple = (5,)
print(type(single_item_tuple))
not_a_tuple = (5) # 这是一个整数
print(type(not_a_tuple))
元组常用于不需要修改的数据集合,或者作为函数返回值返回多个值。
“`
6.3 字典 (Dictionary)
字典是无序(在 Python 3.7+ 中保持插入顺序,但核心特性是基于键的查找)的键值对集合。每个键(Key)都必须是唯一的,且是不可变类型(如字符串、数字、元组)。值(Value)可以是任意类型。字典使用花括号 {}
定义。
“`python
创建字典
my_dict = {“name”: “Bob”, “age”: 25, “city”: “New York”}
访问值 (通过键)
print(my_dict[“name”])
print(my_dict[“age”])
如果键不存在,访问会报错。可以使用 get() 方法避免错误并设置默认值
print(my_dict.get(“country”, “Unknown”)) # 如果键 ‘country’ 不存在,返回 ‘Unknown’
添加或修改键值对
my_dict[“job”] = “Engineer” # 添加新键值对
my_dict[“age”] = 26 # 修改现有键的值
print(my_dict)
删除键值对
del my_dict[“city”]
print(my_dict)
获取所有键、所有值、所有键值对
print(my_dict.keys()) # dict_keys([‘name’, ‘age’, ‘job’])
print(my_dict.values()) # dict_values([‘Bob’, 26, ‘Engineer’])
print(my_dict.items()) # dict_items([(‘name’, ‘Bob’), (‘age’, 26), (‘job’, ‘Engineer’)])
遍历字典
for key in my_dict: # 默认遍历键
print(key, “:”, my_dict[key])
print(“-” * 10)
for key, value in my_dict.items(): # 同时遍历键和值
print(key, “->”, value)
“`
6.4 集合 (Set)
集合是无序的、包含唯一元素的集合。主要用于去重和进行数学上的集合操作(并集、交集等)。集合使用花括号 {}
定义,但空集合必须使用 set()
定义,因为 {}
定义的是空字典。
“`python
创建集合
my_set = {1, 2, 3, 3, 4} # 重复元素 3 会被自动去除
print(my_set) # 输出 {1, 2, 3, 4} (顺序可能不同)
创建空集合
empty_set = set()
print(type(empty_set))
添加元素
my_set.add(5)
print(my_set)
尝试添加重复元素无效
my_set.add(1)
print(my_set)
删除元素
my_set.remove(2) # 删除指定元素,若元素不存在会报错
print(my_set)
my_set.discard(10) # 删除指定元素,若元素不存在不会报错
print(my_set)
集合操作
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
print(set1 | set2) # 并集: {1, 2, 3, 4, 5, 6}
print(set1 & set2) # 交集: {3, 4}
print(set1 – set2) # 差集: {1, 2} (set1 中有但 set2 中没有的)
print(set1 ^ set2) # 对称差集: {1, 2, 5, 6} (并集减去交集)
“`
选择合适的数据结构对于编写高效、可读的代码至关重要。熟练掌握这些基本的数据结构是 Python 编程的关键一步。
第七章:函数——组织可重用代码
函数是一段执行特定任务的代码块,可以被重复调用。使用函数可以提高代码的模块化、可读性和重用性。
7.1 定义和调用函数
使用 def
关键字定义函数,后跟函数名、圆括号 ()
(可选参数放在括号里)和冒号 :
。函数体需要缩进。
“`python
定义一个简单的函数
def greet():
print(“Hello!”)
print(“Welcome to Python.”)
调用函数
greet() # 输出: Hello! Welcome to Python.
“`
7.2 参数和返回值
函数可以接受参数(输入),也可以通过 return
语句返回结果(输出)。
“`python
带参数的函数
def greet_name(name):
print(f”Hello, {name}!”) # f-string 格式化字符串
greet_name(“Alice”) # 调用时传入参数 “Alice”
greet_name(“Bob”)
带参数和返回值的函数
def add(a, b):
sum_result = a + b
return sum_result # 返回计算结果
result = add(5, 3) # 调用函数,并将返回值赋给变量 result
print(result) # 输出 8
函数可以返回多个值 (实际上是返回一个元组)
def get_coords():
x = 10
y = 20
return x, y
coords = get_coords()
print(coords) # 输出 (10, 20)
可以直接解包返回的元组
coord_x, coord_y = get_coords()
print(coord_x) # 输出 10
print(coord_y) # 输出 20
“`
7.3 函数文档字符串 (Docstrings)
使用三引号在函数定义后添加文档字符串,描述函数的功能、参数和返回值。这是非常重要的代码规范。
“`python
def multiply(x, y):
“””
这个函数用于计算两个数的乘积。
Args:
x: 第一个数字。
y: 第二个数字。
Returns:
x 和 y 的乘积。
"""
return x * y
查看函数的文档字符串
print(multiply.doc)
在交互模式下,使用 help(multiply) 也可以看到文档
“`
7.4 默认参数值和关键字参数
“`python
默认参数值
def say_hello(name=”Guest”):
print(f”Hello, {name}!”)
say_hello() # 使用默认值: Hello, Guest!
say_hello(“Charlie”) # 传入新值: Hello, Charlie!
关键字参数
def describe_pet(animal_type, pet_name):
print(f”I have a {animal_type}.”)
print(f”Its name is {pet_name}.”)
describe_pet(“dog”, “Buddy”)
describe_pet(animal_type=”cat”, pet_name=”Whiskers”) # 使用关键字参数,顺序可以调换
describe_pet(pet_name=”Goldie”, animal_type=”fish”) # 顺序调换也正确
混合使用位置参数和关键字参数 (位置参数必须在关键字参数前面)
def mixed_args(a, b=1, c=2):
print(f”a:{a}, b:{b}, c:{c}”)
mixed_args(10) # a=10, b=1, c=2
mixed_args(10, 20) # a=10, b=20, c=2
mixed_args(10, c=30) # a=10, b=1, c=30
mixed_args(a=10, 20) # 错误:位置参数不能出现在关键字参数之后
“`
函数是组织大型程序的关键。将复杂任务分解成更小的、可管理的函数是提高代码质量的重要方法。
第八章:模块和包——利用 Python 的生态系统
Python 的强大很大程度上得益于其庞大的标准库和第三方库。模块和包是组织这些库的方式。
- 模块 (Module): 一个包含 Python 代码的
.py
文件就是一个模块。模块可以包含函数、类、变量等。 - 包 (Package): 包含多个模块的目录。包目录下通常有一个
__init__.py
文件(在较新版本的 Python 中不是必需的,但保留下来是为了兼容性或特殊初始化)。包可以包含子包。
8.1 导入模块
使用 import
语句来导入模块。
“`python
导入整个模块
import math
print(math.sqrt(16)) # 使用 math.function_name() 访问模块中的函数
导入模块并起别名
import random as rnd
print(rnd.randint(1, 10)) # 使用 rnd.function_name()
从模块中导入特定函数或变量
from datetime import date
today = date.today()
print(today) # 直接使用导入的名称
从模块中导入所有内容 (不推荐,容易造成命名冲突)
from math import *
print(sqrt(25)) # 直接使用 sqrt()
导入模块的特定函数并起别名
from time import sleep as delay
print(“Wait for 1 second…”)
delay(1) # 程序会暂停 1 秒
print(“Done waiting.”)
“`
8.2 安装第三方包
Python 的包管理器 pip
可以方便地安装和管理第三方库。你已经在第二章验证过 pip
的安装。
- 安装包:
打开终端或命令行(如果使用了虚拟环境,请先激活)。
运行pip install package_name
例如:pip install requests
(用于发送 HTTP 请求)
pip install numpy pandas matplotlib
(数据科学常用库) - 卸载包:
pip uninstall package_name
- 查看已安装的包:
pip list
- 查看某个包的详细信息:
pip show package_name
- 生成项目依赖文件:
pip freeze > requirements.txt
(将当前环境中所有已安装包及其版本写入文件) - 从依赖文件安装:
pip install -r requirements.txt
(在新环境或部署时非常有用)
第九章:文件操作——与外部世界交互
程序经常需要读写文件来保存或加载数据。Python 提供了简单直观的文件操作接口。
9.1 打开文件
使用内置函数 open()
打开文件。它接受文件路径和打开模式作为参数。
常用的模式:
* 'r'
: 读取模式(默认)。文件必须存在。
* 'w'
: 写入模式。如果文件不存在则创建,如果文件已存在则覆盖其内容。
* 'a'
: 追加模式。如果文件不存在则创建,如果文件已存在则在文件末尾追加内容。
* 'x'
: 创建模式。如果文件已存在则会引发 FileExistsError
。
* 'b'
: 二进制模式。用于读写非文本文件(如图片、音频)。
* 't'
: 文本模式(默认)。与 'b'
结合使用,如 'rb'
(二进制读取), 'wt'
(文本写入)。
“`python
写入文件
try:
file = open(“my_file.txt”, “w”)
file.write(“Hello, file!\n”)
file.write(“This is a new line.\n”)
except IOError as e:
print(f”An error occurred: {e}”)
finally:
if ‘file’ in locals() and not file.closed:
file.close() # 务必关闭文件以释放资源
“`
9.2 读取文件
“`python
读取整个文件
try:
file = open(“my_file.txt”, “r”)
content = file.read()
print(content)
except FileNotFoundError:
print(“File not found.”)
finally:
if ‘file’ in locals() and not file.closed:
file.close()
print(“-” * 10)
逐行读取文件
try:
file = open(“my_file.txt”, “r”)
for line in file:
print(line, end=”) # print 会自动加换行,文件中的行末也有换行,用 end=” 避免双重换行
except FileNotFoundError:
print(“File not found.”)
finally:
if ‘file’ in locals() and not file.closed:
file.close()
“`
9.3 使用 with
语句 (推荐方式)
使用 with open(...) as ...:
语句是处理文件的推荐方式。它能确保文件在使用完毕后自动关闭,即使发生错误也不例外。
“`python
使用 with 写入文件
try:
with open(“another_file.txt”, “w”) as file:
file.write(“This is line 1.\n”)
file.write(“This is line 2.\n”)
print(“File written successfully using with.”)
except IOError as e:
print(f”An error occurred during writing: {e}”)
使用 with 读取文件
try:
with open(“another_file.txt”, “r”) as file:
content = file.read()
print(“\nContent of the file:”)
print(content)
except FileNotFoundError:
print(“File not found.”)
except IOError as e:
print(f”An error occurred during reading: {e}”)
“`
文件操作是程序与持久化数据交互的基础。
第十章:错误和异常处理
程序运行过程中可能会遇到错误。Python 使用异常来表示这些错误。学习如何处理异常可以使你的程序更健壮。
10.1 了解异常
常见的异常类型:
* SyntaxError
: 语法错误,代码不符合 Python 语法规范。
* NameError
: 尝试使用未定义的变量或函数。
* TypeError
: 对某个类型的对象执行了不支持的操作。
* ValueError
: 函数接收到正确类型的参数,但其值是不合适的。
* IndexError
: 序列(列表、元组等)的索引超出范围。
* KeyError
: 字典中使用了不存在的键。
* FileNotFoundError
: 尝试打开不存在的文件。
* ZeroDivisionError
: 除数为零。
10.2 try...except
块
使用 try...except
块来捕获和处理可能发生的异常。
“`python
try:
# 可能引发异常的代码块
num1 = int(input(“请输入一个数字: “))
num2 = int(input(“请输入另一个数字: “))
result = num1 / num2
print(“结果是:”, result)
except ValueError:
# 捕获 ValueError 异常
print(“输入无效,请输入数字!”)
except ZeroDivisionError:
# 捕获 ZeroDivisionError 异常
print(“除数不能为零!”)
except Exception as e:
# 捕获其他所有异常,并打印错误信息
print(f”发生了未知错误: {e}”)
else:
# 如果 try 块没有发生任何异常,则执行 else 块 (可选)
print(“计算成功,没有发生异常。”)
finally:
# 无论是否发生异常,finally 块的代码都会执行 (可选)
print(“程序执行完毕。”)
“`
可以有多个 except
块来处理不同类型的异常。更一般的异常类型(如 Exception
)应该放在后面。
第十一章:下一步——持续学习和实践
恭喜你!你已经掌握了 Python 的核心基础知识:变量、数据类型、运算符、控制流程、基本数据结构、函数、模块、文件操作和异常处理。这为你深入学习 Python 打下了坚实的基础。
然而,编程学习是一个持续的过程。接下来,你可以继续探索更高级的概念和更广阔的应用领域:
- 面向对象编程 (OOP): 学习类 (Class) 和对象 (Object) 的概念,如何定义类、创建对象、继承、多态等。Python 是一门支持 OOP 的语言。
- 更高级的数据结构和技术: 列表推导式、字典推导式、生成器表达式、装饰器、迭代器、上下文管理器等 Python 特有的语法和技巧。
- 标准库探索: 深入了解 Python 的标准库,如
os
(操作系统交互),sys
(解释器交互),re
(正则表达式),json
(处理 JSON 数据),datetime
(日期时间) 等。 - 第三方库学习: 根据你的兴趣方向,学习相关的第三方库:
- Web 开发: Django, Flask, FastAPI
- 数据科学: NumPy, Pandas, Matplotlib, Seaborn
- 机器学习/深度学习: Scikit-learn, TensorFlow, PyTorch, Keras
- 自动化: Selenium, BeautifulSoup, Requests
- GUI 开发: PyQt, Kivy, Tkinter
- 实践项目: 尝试用 Python 解决实际问题。从简单的脚本开始,逐步挑战更复杂的项目,如爬虫、Web 应用、数据分析报告、自动化任务等。实践是检验和巩固知识的最好方式。
- 参与社区: 阅读其他人的代码,参与开源项目,在论坛或社区提问和回答问题。
结论
Python 是一门既强大又易学的编程语言。它的简洁语法、广泛用途和庞大的生态系统使其成为无论是编程新手还是经验丰富的老手都青睐的选择。
通过本文的学习,你已经迈出了 Python 编程的第一步。记住,学习编程最重要的是持续的实践和探索。不要害怕犯错,错误是学习过程中的一部分。不断尝试,不断练习,你会发现 Python 能为你带来无限的可能性。
现在,开始你的 Python 编程之旅,用代码去创造、去解决问题吧!祝你好运!