第一章:函数定义与调用
1.1 函数基础架构
1.1.1 函数定义规范
函数定义采用def
关键字,遵循PEP8命名规范(小写字母+下划线)
def calculate_circle_area(radius):
"""计算圆的面积""" # 文档字符串
PI = 3.14159
return PI * radius ** 2
1.1.2 调用机制解析
函数调用时创建独立栈帧,参数传递采用对象引用机制。示例演示参数传递对可变/不可变对象的影响
def modify_data(data):
data.append(4) # 修改可变对象
data = [5,6,7] # 创建新对象
nums = [1,2,3]
modify_data(nums)
print(nums) # 输出[1,2,3,4]
1.2 参数传递体系
1.2.1 位置参数与关键字参数
位置参数按声明顺序传递,关键字参数显式指定参数名
def create_user(name, age, role="user"):
print(f"{name} ({age}岁) - {role}")
create_user("Alice", 25) # 位置参数
create_user(age=30, name="Bob", role="admin") # 关键字参数
1.2.2 默认参数陷阱与解决方案
默认参数在函数定义时初始化,需避免使用可变默认参数
# 错误示例
def append_value(item, lst=[]):
lst.append(item)
return lst
# 正确做法
def safe_append(item, lst=None):
if lst is None:
lst = []
lst.append(item)
return lst
1.2.3 可变参数处理
使用*args
接收元组型位置参数,**kwargs
接收字典型关键字参数
def dynamic_params(*args, **kwargs):
print(f"位置参数:{args}")
print(f"关键字参数:{kwargs}")
dynamic_params(1,2,3, color="red", size=16)
1.3 返回值与作用域
1.3.1 多返回值机制
返回多个值时自动封装为元组,支持结构化赋值
def analyze_numbers(nums):
return min(nums), max(nums), sum(nums)/len(nums)
min_val, max_val, avg = analyze_numbers([5,2,9,3])
1.3.2 作用域层级
四层作用域解析(LEGB规则)
global_var = 10
def outer_func():
enclosed_var = 20
def inner_func():
local_var = 30
print(global_var + enclosed_var + local_var)
return inner_func
1.3.3 作用域修改实践
使用global和nonlocal关键字跨越作用域
counter = 0
def increment():
global counter
counter +=1
def outer():
count = 0
def inner():
nonlocal count
count +=1
return inner
第二章:模块与包管理
2.1 标准库深度应用
2.1.1 math模块
数学运算核心功能演示
import math
print(math.gcd(48, 180)) # 最大公约数
print(math.radians(180)) # 角度转弧度
print(math.comb(10,3)) # 组合数计算
2.1.2 random模块
随机数生成系统
from random import randint, choices, shuffle
# 生成指定范围整数
print(randint(1,100))
# 权重抽样
colors = ['红', '蓝', '绿']
print(choices(colors, weights=[5,3,2], k=10))
# 列表洗牌
cards = list(range(1,53))
shuffle(cards)
2.2 模块化开发实践
2.2.1 自定义模块架构
规范化的模块创建流程
my_package/
├── __init__.py
├── math_utils.py
└── stats/
├── __init__.py
└── descriptive.py
2.2.2 init.py进阶用法
控制模块导入行为
# __init__.py
__all__ = ['math_utils'] # 控制import *
from .math_utils import * # 初始化导入
2.3 第三方库生态管理
2.3.1 pip高阶应用
完整的包管理流程
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate # Linux/Mac
.\.venv\Scripts\activate # Windows
# 依赖管理
pip install requests==2.25.1
pip freeze > requirements.txt
pip install -r requirements.txt
2.3.2 Conda环境管理
科学计算环境配置
conda create -n myenv python=3.9
conda activate myenv
conda install numpy pandas matplotlib
conda list --export > spec-file.txt
2.3.3 复杂安装场景
多平台编译安装实践
# 从源码安装
git clone https://github.com/example/lib.git
cd lib
python setup.py install
# WHL文件安装
pip install path/to/package.whl
第三章:综合项目实战
3.1 科学计算模块开发
构建数学工具包:
# my_package/math_utils.py
def quadratic(a, b, c):
"""解二次方程"""
discriminant = b**2 - 4*a*c
if discriminant < 0:
return None
x1 = (-b + sqrt(discriminant)) / (2*a)
x2 = (-b - sqrt(discriminant)) / (2*a)
return (x1, x2)
def vector_norm(vector):
"""计算向量模长"""
return sum(x**2 for x in vector)**0.5
3.2 数据可视化系统集成
结合第三方库的完整工作流:
import numpy as np
import matplotlib.pyplot as plt
from my_package import stats
data = np.random.normal(0, 1, 1000)
stats.descriptive_report(data)
plt.hist(data, bins=30)
plt.title("正态分布数据可视化")
plt.show()