feat(python进阶): 完成第三至第八课教学内容

This commit is contained in:
zhiye.sun
2026-08-07 17:14:48 +08:00
parent f7c820b0f4
commit aff05283a2
21 changed files with 3504 additions and 13 deletions

View File

@@ -0,0 +1,77 @@
# 第 2-4 课完整示例:推导式与简化写法
#
# 本示例先展示普通循环,再展示作用相同的推导式。
# 推导式适合简单的数据转换和筛选,不应为了缩短代码而堆叠复杂逻辑。
def get_enabled_agent_names(agents):
"""使用列表推导式返回所有已启用 Agent 的名称。"""
return [agent["name"] for agent in agents if agent["enabled"]]
def get_agent_tool_counts(agents):
"""使用字典推导式建立 Agent 名称与工具数量的对应关系。"""
return {
agent["name"]: len(agent.get("tools", []))
for agent in agents
}
def get_unique_tools(agents):
"""使用集合推导式收集不重复的工具名称。"""
return {
tool
for agent in agents
for tool in agent.get("tools", [])
}
def get_status_text(agent):
"""使用条件表达式返回简短的中文状态。"""
return "启用" if agent["enabled"] else "停用"
def main():
"""准备 Agent 数据,并演示四种简化写法。"""
agents = [
{
"name": "代码助手",
"enabled": True,
"tools": ["搜索", "终端"],
},
{
"name": "聊天助手",
"enabled": False,
"tools": ["搜索"],
},
{
"name": "测试助手",
"enabled": True,
"tools": ["终端", "测试"],
},
]
# 普通循环写法:先创建空列表,再逐条判断和添加。
names_from_loop = []
for agent in agents:
if agent["enabled"]:
names_from_loop.append(agent["name"])
# 列表推导式可以简洁表达同一个“遍历、筛选、保存”过程。
enabled_names = get_enabled_agent_names(agents)
tool_counts = get_agent_tool_counts(agents)
unique_tools = get_unique_tools(agents)
print(f"普通循环结果:{names_from_loop}")
print(f"列表推导式结果:{enabled_names}")
print(f"工具数量字典:{tool_counts}")
print(f"不重复工具:{sorted(unique_tools)}")
print("Agent 状态:")
for agent in agents:
status_text = get_status_text(agent)
print(f"- {agent['name']}{status_text}")
if __name__ == "__main__":
main()