Python教程29:函数与模块总结

Python教程29:函数与模块总结 “温故而知新,可以为师矣。” 经过前面13课的学习(第17-28课),我们系统学习了Python的函数、模块、异常处理等核心概念。今天我们回顾总结,梳理知识体系,巩固所学内容。 1. 函数基础回顾 核心概念 函数的作用: 代码复用:写一次,用多次 模块化:分解复杂问题 抽象:隐藏实现细节 可读性:函数名即文档 关键知识点 1# 基本结构 2def function_name(parameters): 3 """文档字符串""" 4 # 函数体 5 return result 6 7# 参数类型 8def func(a, b=默认值, *args, **kwargs): 9 """ 10 a: 位置参数 11 b: 默认参数 12 *args: 可变位置参数(元组) 13 **kwargs: 可变关键字参数(字典) 14 """ 15 pass 16 17# 返回值 18def multi_return(): 19 return value1, value2 # 实际返回元组 20 21# 函数是一等公民 22def outer(func): 23 return func # 可以作为参数和返回值 回顾第17课:函数基础(定义、参数、返回值、作用域) 2. Lambda与高阶函数 Lambda表达式 1# 匿名函数 2square = lambda x: x ** 2 3 4# 适用场景:简单、临时、作为参数 5sorted(students, key=lambda x: x["score"]) 高阶函数 1# map - 映射 2squares = map(lambda x: x**2, numbers) 3 4# filter - 过滤 5evens = filter(lambda x: x % 2 == 0, numbers) 6 7# reduce - 累积(需要从functools导入) 8from functools import reduce 9total = reduce(lambda x, y: x + y, numbers) 何时用Lambda vs普通函数: ...

2025-02-16 · 5 min · 904 words · 老墨

Python教程21:包(Package)

Python教程21:包(Package) “治大国如烹小鲜,理大项目如分包装。” 上一课我们学习了模块,今天更进一步,学习包(Package)——模块的集合。当项目规模变大时,包能帮你更好地组织代码。 1. 什么是包 定义 **包(Package)**是一个包含__init__.py文件的目录,用于组织相关的模块。 为什么需要包: 层次化组织:大项目有上百个模块,需要分类 命名空间:不同包可以有同名模块 代码复用:打包分发给他人使用 团队协作:不同团队负责不同包 简单示例 项目结构: myproject/ ├── main.py └── utils/ # 这是一个包 ├── __init__.py # 必需!标识这是一个包 ├── string_utils.py └── math_utils.py init.py的作用: 告诉Python这个目录是一个包 可以为空文件 也可以包含包的初始化代码 Python 3.3+可以省略(但不推荐) 使用包: 1# main.py 2from utils import string_utils 3from utils import math_utils 4 5# 或者 6import utils.string_utils 7import utils.math_utils 2. 创建第一个包 步骤 创建目录结构: mymath/ ├── __init__.py ├── basic.py └── advanced.py 编写模块代码: 1# mymath/basic.py 2"""基础数学运算""" 3 4def add(a, b): 5 """加法""" 6 return a + b 7 8def subtract(a, b): 9 """减法""" 10 return a - b 1# mymath/advanced.py 2"""高级数学运算""" 3 4def power(base, exp): 5 """幂运算""" 6 return base ** exp 7 8def sqrt(x): 9 """平方根(简单实现)""" 10 return x ** 0.5 配置__init__.py: 1# mymath/__init__.py 2""" 3mymath包:提供数学运算功能 4 5这个文件在包被导入时执行,可以用来: 61. 初始化包级别的变量 72. 导入子模块,简化使用 83. 定义__all__,控制from package import *的行为 9""" 10 11# 包级别的变量 12VERSION = "1.0.0" 13 14# 简化导入:用户可以直接from mymath import add 15from .basic import add, subtract 16from .advanced import power, sqrt 17 18# 定义公开接口 19__all__ = ['add', 'subtract', 'power', 'sqrt', 'VERSION'] 20 21# 包初始化代码 22print(f"mymath包已加载,版本:{VERSION}") 使用包: 1# 方式1:直接从包导入(因为__init__.py中重新导出了) 2from mymath import add, power 3print(add(1, 2)) # 3 4print(power(2, 3)) # 8 5 6# 方式2:从子模块导入 7from mymath.basic import add 8from mymath.advanced import power 9 10# 方式3:导入整个包 11import mymath 12print(mymath.add(1, 2)) 13print(mymath.VERSION) 3. 子包和嵌套结构 包可以包含子包,形成层次结构: ...

2024-09-20 · 4 min · 671 words · 老墨

Python教程20:模块基础

Python教程20:模块基础 “分而治之,事半功倍。” 当代码越来越多时,把所有代码放在一个文件里会变得难以维护。模块(Module)就是Python的代码组织方式,让你可以把相关功能分门别类。今天我们学习如何创建和使用模块。 1. 什么是模块 定义 **模块(Module)**是一个包含Python代码的.py文件。每个Python文件都可以作为一个模块被其他文件导入使用。 为什么需要模块: 代码复用:写一次,到处用 命名空间:避免变量名冲突 代码组织:按功能分类,便于维护 协作开发:不同人负责不同模块 简单示例 创建一个文件math_utils.py: 1# math_utils.py 2"""数学工具模块""" 3 4PI = 3.14159 5 6def add(a, b): 7 """加法""" 8 return a + b 9 10def circle_area(radius): 11 """计算圆面积""" 12 return PI * radius ** 2 13 14class Calculator: 15 """计算器类""" 16 def multiply(self, a, b): 17 return a * b 在另一个文件中使用: 1# main.py 2import math_utils # 导入模块 3 4print(math_utils.PI) # 3.14159 5print(math_utils.add(3, 5)) # 8 6print(math_utils.circle_area(5)) # 78.53975 7 8calc = math_utils.Calculator() 9print(calc.multiply(4, 5)) # 20 模块的本质: 模块是一个命名空间(namespace) 文件名(去掉.py)就是模块名 通过模块名访问其中的变量、函数、类 2. 导入模块的方式 Python提供了多种导入方式,适应不同场景。 方式1:import模块名 1import math_utils 2 3# 使用:模块名.成员 4result = math_utils.add(1, 2) 优点: ...

2024-09-06 · 3 min · 554 words · 老墨