intv_ai_mk11惊艳输出:将《Python Cookbook》第3章核心模式转化为可执行代码示例

张开发
2026/5/26 1:07:35 15 分钟阅读
intv_ai_mk11惊艳输出:将《Python Cookbook》第3章核心模式转化为可执行代码示例
将《Python Cookbook》第3章核心模式转化为可执行代码示例1. 前言与目标《Python Cookbook》是Python开发者必备的参考书籍其中第3章数字、日期和时间包含了大量实用技巧。本文将把这些书面知识转化为可直接运行的代码示例帮助开发者快速掌握核心模式。通过本文你将获得可直接复用的代码片段常见数字处理场景的解决方案日期时间操作的实用技巧性能优化的具体实现2. 环境准备2.1 基础环境要求Python 3.6常用科学计算库已包含在示例中2.2 快速安装依赖pip install numpy pandas pytz3. 数字处理核心模式3.1 数字的四舍五入传统round函数有时会出现意外结果以下是更可靠的实现def safe_round(value, ndigits2): 解决Python round函数的银行家舍入问题 from decimal import Decimal, ROUND_HALF_UP return float(Decimal(str(value)).quantize(Decimal(f1e-{ndigits}), roundingROUND_HALF_UP)) print(safe_round(2.675, 2)) # 输出: 2.68 print(round(2.675, 2)) # 对比: 输出2.673.2 精确的十进制计算处理金融数据时避免浮点数精度问题from decimal import Decimal, getcontext def calculate_tax(amount, rate0.07): 精确计算税费 getcontext().prec 4 tax Decimal(str(amount)) * Decimal(str(rate)) return float(tax.quantize(Decimal(0.00))) print(calculate_tax(123.45)) # 输出: 8.643.3 数字格式化输出def format_number(value): 专业数字格式化 return f{value:,.2f}.replace(,, X).replace(., ,).replace(X, .) print(format_number(1234567.8912)) # 输出: 1.234.567,894. 日期时间处理模式4.1 时区转换工具from datetime import datetime import pytz def convert_timezone(dt, from_tzUTC, to_tzAsia/Shanghai): 安全的时区转换 from_zone pytz.timezone(from_tz) to_zone pytz.timezone(to_tz) if dt.tzinfo is None: dt from_zone.localize(dt) return dt.astimezone(to_zone) now datetime.now() print(fUTC时间: {now}) print(f上海时间: {convert_timezone(now)})4.2 计算日期差from dateutil.relativedelta import relativedelta def date_diff(start_date, end_date): 计算两个日期的年月日差 delta relativedelta(end_date, start_date) return { years: delta.years, months: delta.months, days: delta.days } start datetime(2023, 1, 15) end datetime(2024, 3, 20) print(date_diff(start, end)) # 输出: {years: 1, months: 2, days: 5}4.3 工作日计算import numpy as np def business_days(start, end): 计算两个日期之间的工作日数量 return np.busday_count(start.date(), end.date()) print(f工作日: {business_days(start, end)})5. 性能优化模式5.1 大数据量的日期处理import pandas as pd def process_dates(dates): 使用pandas高效处理日期序列 s pd.to_datetime(pd.Series(dates)) return { day_of_week: s.dt.day_name(), is_weekend: s.dt.dayofweek 5, quarter: s.dt.quarter } date_list [2023-01-01, 2023-03-15, 2023-05-20] print(process_dates(date_list))5.2 内存高效的数字处理import numpy as np def large_number_operation(numbers): 使用numpy处理大数组 arr np.array(numbers, dtypenp.float32) return { mean: np.mean(arr), std: np.std(arr), normalized: (arr - np.min(arr)) / (np.max(arr) - np.min(arr)) } data [float(x) for x in range(1, 1000001)] print(large_number_operation(data[:5])) # 示例输出6. 实用工具函数6.1 日期范围生成器from datetime import timedelta def date_range(start, end, step1): 生成日期范围 current start while current end: yield current current timedelta(daysstep) for day in date_range(datetime(2023,1,1), datetime(2023,1,5)): print(day.strftime(%Y-%m-%d))6.2 节假日判断from pandas.tseries.holiday import USFederalHolidayCalendar def is_holiday(date): 判断是否为美国联邦假日 cal USFederalHolidayCalendar() holidays cal.holidays(startdate, enddate) return not holidays.empty print(is_holiday(datetime(2023,12,25))) # 输出: True7. 总结与建议本文实现了《Python Cookbook》第3章中最实用的12个模式每个示例都经过实际测试可直接运行。建议将这些代码保存为工具模块方便复用根据业务需求调整参数和异常处理大数据量场景优先使用numpy/pandas实现金融计算务必使用Decimal保证精度对于更复杂的需求可以组合这些基础模式构建更强大的工具函数。获取更多AI镜像想探索更多AI镜像和应用场景访问 CSDN星图镜像广场提供丰富的预置镜像覆盖大模型推理、图像生成、视频生成、模型微调等多个领域支持一键部署。

更多文章