Day4:python函数与模块——构建销售数据分析工具包

92 阅读2分钟

目标:掌握函数封装与模块化开发,实现可复用的数据分析逻辑。


一、函数:封装重复操作

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. 创建自定义模块

步骤

  1. 新建 sales_tools.py 文件
  2. 写入函数:
# sales_tools.py
def format_currency(amount):
    return f"¥{amount:,.2f}"
  1. 主程序调用:
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 函数

常见问题

  1. 函数名冲突
    → 使用模块前缀区分,如 sales_tools.format_currency()
  2. 修改模块未生效
    → 重启Python解释器或使用 importlib.reload()
  3. 循环导入
    → 避免模块A导入模块B的同时模块B导入模块A