3Learning Python(第5版)

语句与语法

程序结构

if语句while循环for循环列表解析异常处理

🎯 AI 时代的学习建议:不要只读理论。理解这一章的设计动机(为什么需要这个概念?)和边界条件(什么情况下会失效?)。当 AI 生成的代码涉及这些概念时,你能判断它是否用对了场景。AI 能帮你总结内容,但无法替代你亲手阅读、思考、建立直觉的过程。

第3章:语句与语法(Statements and Syntax)

一、导读

1.1 本章学习目标

第3章深入讲解 Python 的语句和语法结构。Python 使用缩进来组织代码,这是其最显著的特征之一。

1.2 为什么第三章如此重要

理解 Python 的语句结构和语法特性,是写出 Pythonic 代码的基础。

1.3 核心问题引导

Python 的缩进规则是什么?

列表推导式如何使用?

异常处理的语法是什么?

with 语句的作用是什么?


二、核心概念详解

3.1 缩进

python
# Python 使用缩进代替大括号
if x > 0:
    print("positive")
elif x == 0:
    print("zero")
else:
    print("negative")

# 缩进必须一致(通常 4 个空格)
def function():
    if True:
        print("hello")  # 4 个空格
    # 不能混用 Tab 和空格

3.2 列表推导式

python
# 基本形式
squares = [x**2 for x in range(10)]
# [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 带条件
evens = [x for x in range(20) if x % 2 == 0]
# [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

# 嵌套
matrix = [[i*j for j in range(4)] for i in range(3)]
# [[0, 0, 0, 0], [0, 1, 2, 3], [0, 2, 4, 6]]

# 字典推导式
squares_dict = {x: x**2 for x in range(5)}
# {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

# 集合推导式
unique_lengths = {len(word) for word in ["hello", "world", "hi"]}
# {2, 5}

3.3 异常处理

python
# try/except/else/finally
try:
    result = 10 / 0
except ZeroDivisionError as e:
    print(f"Error: {e}")
except (TypeError, ValueError):
    print("Type or value error")
else:
    print("No error")  # 没有异常时执行
finally:
    print("Always executed")  # 总是执行

# 抛出异常
raise ValueError("Invalid value")

# 自定义异常
class MyError(Exception):
    def __init__(self, message, code):
        super().__init__(message)
        self.code = code

raise MyError("Something went wrong", 500)

3.4 with 语句

python
# with 语句自动管理资源
with open("file.txt", "r") as f:
    content = f.read()
# 文件自动关闭

# 自定义上下文管理器
class Timer:
    def __enter__(self):
        self.start = time.time()
        return self
    
    def __exit__(self, *args):
        self.elapsed = time.time() - self.start
        print(f"Elapsed: {self.elapsed:.2f}s")

with Timer():
    time.sleep(1)

三、实战案例

3.1 数据处理管道

python
def process_data(data):
    # 列表推导式链式处理
    result = [
        item.strip().lower()
        for item in data
        if item and len(item) > 3
    ]
    return result

data = ["  Hello  ", "Hi", "", "World", "  Python  "]
print(process_data(data))  # ['hello', 'world', 'python']

四、本章小结

Python 使用缩进组织代码,列表推导式提供简洁的数据转换,异常处理使用 try/except,with 语句自动管理资源。


五、思考与练习

Python 的缩进规则是什么?

列表推导式比 for 循环好在哪里?

异常处理的 else 和 finally 有什么区别?

with 语句的原理是什么?

如何编写自定义上下文管理器?


3/8语句与语
0%