目标:掌握函数封装与模块化开发,实现可复用的数据分析逻辑。
一、函数:封装重复操作
1. 基础函数定义
# 计算订单折扣价
def get_discount_price(price, discount=0.9):
"""计算商品折扣价格
:param price: 原价
:param discount: 折扣率(默认9折)
:return: 折后价(保留两位小数)
"""
return round(price * discount, 2)
# 调用示例
print(get_discount_price(100)) # 90.0
print(get_discount_price(200, 0.7)) # 140.0
2. 多返回值函数
def analyze_sales(sales_list):
total = sum(sales_list)
avg = total / len(sales_list)
return total, avg
daily_sales = [1200, 950, 1800]
sales_total, sales_avg = analyze_sales(daily_sales)
print(f"总销售额:{sales_total},均值:{sales_avg:.2f}")
二、模块:代码组织与复用
1. 使用标准库(datetime)
from datetime import datetime
def generate_report():
current_time = datetime.now().strftime("%Y-%m-%d %H:%M")
return f"报告生成时间:{current_time}"
print(generate_report()) # 输出:报告生成时间:2024-03-15 14:30
2. 创建自定义模块
步骤:
- 新建
sales_tools.py文件 - 写入函数:
# sales_tools.py
def format_currency(amount):
return f"¥{amount:,.2f}"
- 主程序调用:
from sales_tools import format_currency
print(format_currency(12345.67)) # 输出:¥12,345.67
三、综合实战:销售报告生成器
# 数据准备
products = ["手机", "笔记本", "平板"]
prices = [3999, 8999, 2999]
quantities = [15, 8, 20]
# 功能函数
def calculate_total(price, qty):
return price * qty
def generate_product_report(name, price, qty):
total = calculate_total(price, qty)
return f"{name} | 单价:{price} | 销量:{qty} | 总额:{total}"
# 生成全部报告
for i in range(len(products)):
report = generate_product_report(products[i], prices[i], quantities[i])
print(report)
输出:
手机 | 单价:3999 | 销量:15 | 总额:59985
笔记本 | 单价:8999 | 销量:8 | 总额:71992
平板 | 单价:2999 | 销量:20 | 总额:59980
四、今日任务清单
- 为
get_discount_price添加价格不能为负数的校验 - 创建
math_tools.py模块,包含百分比计算函数 - 修改报告生成器,调用自定义的
format_currency函数
常见问题
- 函数名冲突:
→ 使用模块前缀区分,如sales_tools.format_currency() - 修改模块未生效:
→ 重启Python解释器或使用importlib.reload() - 循环导入:
→ 避免模块A导入模块B的同时模块B导入模块A