控制流:if / for / while
一句话
Python程序的条件判断、循环执行和函数定义基础语法。
什么时候翻这页
- 需要根据条件执行不同逻辑的Agent工具调用
- 需要遍历数据集处理多个任务的Agent工作流
- 需要定义可重用函数的Agent代码结构
- 需要使用match语句处理结构化输出的Agent响应解析
核心概念
- 条件语句:if-elif-else结构用于根据条件执行不同代码块
- 循环语句:for循环遍历序列,while循环根据条件重复执行
- range()函数:生成等差数列,常用于循环计数
- break和continue:控制循环流程,break跳出循环,continue跳过当前迭代
- 循环else子句:循环正常完成时执行(未触发break)
- pass语句:空操作占位符
- match语句:模式匹配,根据数据结构执行不同分支
- 函数定义:使用def关键字定义可重用代码块
- 函数参数:位置参数、关键字参数、默认值参数、可变参数
- Lambda表达式:匿名函数,简洁定义简单功能
怎么做
- 条件判断:
x = int(input("请输入一个整数: "))
if x < 0:
x = 0
print('负数已改为零')
elif x == 0:
print('零')
elif x == 1:
print('单一')
else:
print('更多')
- 循环遍历:
words = ['猫', '窗户', '拆窗']
for w in words:
print(w, len(w))
- 使用range():
for i in range(5):
print(i) # 输出: 0 1 2 3 4
- 循环控制:
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(f"{n} 等于 {x} * {n//x}")
break
else:
print(f"{n} 是质数")
- 函数定义:
def fib(n):
"""打印小于n的斐波那契数列"""
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
- match语句:
def http_error(status):
match status:
case 400:
return "错误请求"
case 404:
return "未找到"
case 418:
return "我是一个茶壶"
case _:
return "网络出问题"
命令 / API 速查
| 语句/函数 | 描述 | 示例 |
|---|---|---|
| if-elif-else | 条件判断 | if x > 0: ... elif x == 0: ... else: ... |
| for | 循环遍历 | for item in sequence: ... |
| while | 条件循环 | while condition: ... |
| range() | 生成数列 | range(5), range(1, 10, 2) |
| break | 跳出循环 | for i in range(10): if i == 5: break |
| continue | 跳过当前迭代 | for i in range(10): if i % 2 == 0: continue |
| pass | 空语句 | def func(): pass |
| match | 模式匹配 | match value: case pattern1: ... case pattern2: ... |
| def | 定义函数 | def func(params): ... |
| return | 返回值 | return value |
| lambda | 匿名函数 | lambda x, y: x + y |
与 Agent 开发的联系
- 条件判断是Agent工具调用决策的基础,如根据用户输入选择合适的工具
- 循环结构用于处理批量任务,如Agent需要遍历多个数据源或处理多个用户请求
- 函数定义使Agent代码模块化,便于重用和测试,特别是工具函数的封装
- match语句可用于解析和结构化处理API返回的复杂数据,如处理不同格式的工具响应
初学者易错点
- 缩进错误:Python使用缩进而非大括号表示代码块,缩进不一致会导致语法错误
- 循环中的变量作用域:在循环内定义的变量在循环外可能无法访问
- 默认参数陷阱:可变对象(如列表)作为默认参数会在多次调用间共享状态
- break和else的混淆:循环的else子句在循环正常完成时执行,而非条件为真时
- match语句的模式匹配规则:不熟悉时容易忽略通配符(_)或守卫子句(if)的使用
相关词条
tutorial-datastructures数据结构:列表、字典等数据组织方式tutorial-errors错误和异常:处理程序运行时的错误tutorial-classes类:面向对象编程基础tutorial-modules模块:代码组织和重用tutorial-io输入输出:处理文件和用户交互tutorial-functional函数式编程:高阶函数和函数工具