Files
PythonLearn/01_python基础/1_13_函数进阶/advanced_functions.py

101 lines
2.6 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 第 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)