feat(python基础): 完成第十一至十三课教学内容
This commit is contained in:
100
01_python基础/1_13_函数进阶/advanced_functions.py
Normal file
100
01_python基础/1_13_函数进阶/advanced_functions.py
Normal file
@@ -0,0 +1,100 @@
|
||||
# 第 1-13 课示例:函数进阶
|
||||
#
|
||||
# 本文件依次演示:
|
||||
# 1. 返回多个结果;
|
||||
# 2. 提前返回;
|
||||
# 3. 使用 *args 接收任意数量的位置参数;
|
||||
# 4. 使用 **kwargs 接收任意数量的关键字参数;
|
||||
# 5. 在调用函数时解包列表和字典。
|
||||
|
||||
|
||||
def print_separator():
|
||||
"""输出分隔线,让不同示例的结果更容易区分。"""
|
||||
print("=" * 30)
|
||||
|
||||
|
||||
def get_agent_summary(agent):
|
||||
"""返回 Agent 名称和工具数量。"""
|
||||
agent_name = agent["name"]
|
||||
tool_count = len(agent.get("tools", []))
|
||||
return agent_name, tool_count
|
||||
|
||||
|
||||
def get_agent_status(agent):
|
||||
"""根据 Agent 的 enabled 配置返回中文状态。"""
|
||||
# get() 的第二个参数 False 是默认值。
|
||||
# 如果字典中没有 enabled,就把它当作未启用处理。
|
||||
if not agent.get("enabled", False):
|
||||
return "停用"
|
||||
|
||||
# 前面的条件成立时,函数已经提前结束。
|
||||
# 因此执行到这里时,可以确定 Agent 已经启用。
|
||||
return "启用"
|
||||
|
||||
|
||||
def count_tools(*tools):
|
||||
"""返回调用者传入的工具数量。"""
|
||||
# tools 在函数内部是元组,可以使用 len() 统计元素数量。
|
||||
return len(tools)
|
||||
|
||||
|
||||
def build_agent_config(**config):
|
||||
"""把关键字参数收集成 Agent 配置字典并返回。"""
|
||||
# config 在函数内部是字典。
|
||||
return config
|
||||
|
||||
|
||||
def add_three_numbers(first, second, third):
|
||||
"""返回三个数字的和。"""
|
||||
return first + second + third
|
||||
|
||||
|
||||
def describe_agent(name, model):
|
||||
"""返回包含 Agent 名称和模型的描述文本。"""
|
||||
return f"{name} 使用 {model}"
|
||||
|
||||
|
||||
print("一、返回多个结果")
|
||||
example_agent = {
|
||||
"name": "代码助手",
|
||||
"tools": ["搜索", "终端"],
|
||||
}
|
||||
agent_name, tool_count = get_agent_summary(example_agent)
|
||||
print(f"Agent 名称:{agent_name}")
|
||||
print(f"工具数量:{tool_count}")
|
||||
|
||||
print_separator()
|
||||
|
||||
print("二、提前返回")
|
||||
print(get_agent_status({"name": "代码助手", "enabled": True}))
|
||||
print(get_agent_status({"name": "聊天助手", "enabled": False}))
|
||||
|
||||
print_separator()
|
||||
|
||||
print("三、任意数量的位置参数")
|
||||
available_tool_count = count_tools("搜索", "终端", "计算器")
|
||||
print(f"工具数量:{available_tool_count}")
|
||||
|
||||
print_separator()
|
||||
|
||||
print("四、任意数量的关键字参数")
|
||||
agent_config = build_agent_config(
|
||||
name="代码助手",
|
||||
model="gpt-5",
|
||||
enabled=True,
|
||||
)
|
||||
print(agent_config)
|
||||
|
||||
print_separator()
|
||||
|
||||
print("五、调用时解包数据")
|
||||
numbers = [10, 20, 30]
|
||||
total = add_three_numbers(*numbers)
|
||||
print(f"数字总和:{total}")
|
||||
|
||||
agent_data = {
|
||||
"name": "代码助手",
|
||||
"model": "gpt-5",
|
||||
}
|
||||
description = describe_agent(**agent_data)
|
||||
print(description)
|
||||
Reference in New Issue
Block a user