Python自学12 — 函数和模块

Python自学12 --- 函数和模块

在 Python 编程学习的旅程中,当代码量逐渐增加,我们会发现重复编写相同逻辑的代码不仅耗时,还会导致程序结构混乱、难以维护。而函数与模块的出现,正是为了解决这一问题 ------ 它们如同编程世界中的 "积木" 与 "工具箱",让我们能够将复杂的程序拆解为更小、更易管理的单元,实现代码的复用与结构化。本章将系统讲解函数的定义、使用与进阶特性,以及模块的创建、导入与实战应用,为后续编写大型程序奠定基础。

1️⃣ 为什么要用函数和模块

  • 函数:把一段可重复使用的代码封装起来,减少重复、提高可维护性。
  • 模块:把相关功能的函数、类、变量组织到一个文件中,方便管理与复用。

📌 一句话记忆

函数解决"代码复用"的问题,模块解决"代码组织"的问题。


2️⃣ 函数基础

2.1 定义函数

python 复制代码
def greet(name):
    """打印问候语"""
    print(f"Hello, {name}!")
  • def:定义函数的关键字
  • name:形参(parameter)
  • """...""":函数文档字符串(docstring),用于说明函数作用

2.2 调用函数

python 复制代码
greet("星哥")

输出:

复制代码
Hello, 星哥!

2.3 参数类型

参数类型 示例 说明
位置参数 def add(a, b) 按顺序传值
默认参数 def add(a, b=10) 可不传,使用默认值
可变参数 def sum_all(*args) 接收任意数量的位置参数
关键字参数 def show_info(**kwargs) 接收任意数量的键值对
混合使用 def func(a, b=1, *args, **kwargs) 灵活组合

2.4 返回值

python 复制代码
def add(a, b):
    return a + b

result = add(3, 5)
print(result)  # 8
  • return 会结束函数执行并返回结果
  • 没有 return 时,默认返回 None

3️⃣ 函数进阶技巧

3.1 函数文档与类型注解

python 复制代码
def multiply(a: int, b: int) -> int:
    """返回两个整数的乘积"""
    return a * b
  • 类型注解不会限制类型,但能提升可读性和 IDE 提示效果

3.2 Lambda 匿名函数

python 复制代码
square = lambda x: x ** 2
print(square(4))  # 16
  • 适合简单逻辑,复杂逻辑建议用 def

3.3 函数作为参数

python 复制代码
def apply(func, value):
    return func(value)

print(apply(square, 5))  # 25
  • Python 函数是一等公民,可以作为参数传递

4️⃣ 模块基础

4.1 创建模块

假设有个文件 mymath.py

python 复制代码
def add(a, b):
    return a + b

def sub(a, b):
    return a - b

4.2 导入模块

python 复制代码
import mymath

print(mymath.add(3, 5))

4.3 from-import 语法

python 复制代码
from mymath import add

print(add(10, 20))
  • 只导入需要的函数,减少命名冲突

4.4 模块别名

python 复制代码
import mymath as mm
print(mm.sub(10, 3))

4.5 常用内置模块

模块 作用
math 数学运算
os 操作系统交互
sys Python 解释器相关
datetime 日期时间处理
random 随机数生成

5️⃣ __name__ == "__main__" 用法

python 复制代码
# mymath.py
def add(a, b):
    return a + b

if __name__ == "__main__":
    print(add(2, 3))
  • 当模块被直接运行时,__name__"__main__"
  • 当模块被导入时,这段代码不会执行

6️⃣ 实战案例:拆分工具模块

项目结构:

复制代码
project/
│── main.py
└── utils.py

utils.py

python 复制代码
def greet(name):
    return f"Hello, {name}!"

def add(a, b):
    return a + b

main.py

python 复制代码
from utils import greet, add

print(greet("星哥"))
print(add(10, 20))

好处:

  • 逻辑清晰
  • 方便多人协作
  • 模块可复用到其他项目

7️⃣ 总结与建议

  • 函数:封装逻辑,减少重复,提高可维护性

  • 模块:组织代码,方便复用与管理

  • 最佳实践

    1. 函数名、模块名用小写+下划线
    2. 每个函数只做一件事
    3. 给函数写 docstring
    4. 模块按功能拆分,不要太大
相关推荐
saber_andlibert15 分钟前
【Linux】深入理解Linux的进程(一)
linux·运维·服务器·开发语言·c++
yanqiaofanhua3 小时前
C语言自学--数据在内存中的存储
c语言·开发语言
计算机软件程序设计6 小时前
基于Python的二手车价格数据分析与预测系统的设计与实现
开发语言·python·数据分析·预测系统
mortimer7 小时前
Traceback 模块:`format_exc` 和 `format_exception` 傻傻分不清
python
Cherry Zack7 小时前
了解Django模型,从基础到实战
python·学习·django
꒰ঌ 安卓开发໒꒱8 小时前
Java面试-并发面试(二)
java·开发语言·面试
qq7422349848 小时前
语音识别:PyAudio、SoundDevice、Vosk、openai-whisper、Argos-Translate、FunASR(Python)
python·whisper·语音识别
比特森林探险记8 小时前
Golang面试-Channel
服务器·开发语言·golang
曾经的三心草8 小时前
OpenCV2-图像基本操作-阈值与平滑处理-形态学-梯度运算
python·opencv
xiangzhihong88 小时前
Spring Boot实现文字转语音功能
开发语言·python