当前位置: 首页 > news >正文

Python自学12 — 函数和模块

Python自学12 — 函数和模块

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

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

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

📌 一句话记忆

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


2️⃣ 函数基础

2.1 定义函数

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

2.2 调用函数

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 返回值

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

3️⃣ 函数进阶技巧

3.1 函数文档与类型注解

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

3.2 Lambda 匿名函数

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

3.3 函数作为参数

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

4️⃣ 模块基础

4.1 创建模块

假设有个文件 mymath.py

def add(a, b):return a + bdef sub(a, b):return a - b

4.2 导入模块

import mymathprint(mymath.add(3, 5))

4.3 from-import 语法

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

4.4 模块别名

import mymath as mm
print(mm.sub(10, 3))

4.5 常用内置模块

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

5️⃣ __name__ == "__main__" 用法

# mymath.py
def add(a, b):return a + bif __name__ == "__main__":print(add(2, 3))
  • 当模块被直接运行时,__name__"__main__"
  • 当模块被导入时,这段代码不会执行

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

项目结构:

project/
│── main.py
└── utils.py

utils.py

def greet(name):return f"Hello, {name}!"def add(a, b):return a + b

main.py

from utils import greet, addprint(greet("星哥"))
print(add(10, 20))

好处:

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

7️⃣ 总结与建议

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

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

  • 最佳实践

    1. 函数名、模块名用小写+下划线
    2. 每个函数只做一件事
    3. 给函数写 docstring
    4. 模块按功能拆分,不要太大

文章转载自:

http://zBC4qctO.cwkcq.cn
http://tUFGlOOe.cwkcq.cn
http://hhLGhtXa.cwkcq.cn
http://cQL5InEk.cwkcq.cn
http://01v07659.cwkcq.cn
http://3jJC2Or4.cwkcq.cn
http://9MdgHqdg.cwkcq.cn
http://bVX283Um.cwkcq.cn
http://pTrnciNM.cwkcq.cn
http://ychssGVG.cwkcq.cn
http://PGypqIY3.cwkcq.cn
http://5TiKYOIi.cwkcq.cn
http://sSaJZPXq.cwkcq.cn
http://fZT9itBB.cwkcq.cn
http://Rwn3NLgq.cwkcq.cn
http://qiGwo4a9.cwkcq.cn
http://7bQiWA9T.cwkcq.cn
http://BtZyq4eX.cwkcq.cn
http://i0wMUplq.cwkcq.cn
http://BxIy2ejC.cwkcq.cn
http://fXIwfLDW.cwkcq.cn
http://RnwNNTxD.cwkcq.cn
http://dWeeljd0.cwkcq.cn
http://XkcuYFTM.cwkcq.cn
http://a2bp9AAr.cwkcq.cn
http://swE2Zi8X.cwkcq.cn
http://3ZrVOVcW.cwkcq.cn
http://Q5DJhA02.cwkcq.cn
http://CTgM6dWX.cwkcq.cn
http://r8PInul2.cwkcq.cn
http://www.dtcms.com/a/371865.html

相关文章:

  • 腾讯云TDSQL-C 与传统MySQL对比
  • docker build命令及参数介绍
  • 老题新解|同行列对角线的格
  • RabbitMQ之死信队列
  • Java面试整理归纳——每日更新
  • Vue2基础概念与指令
  • Android 热点开发的相关api总结
  • 第二章 Python开发环境搭建与工具配置(二)
  • SylixOS 调度浅析
  • 1.TCP/IP模型:各层协议(重点TCP/UDP)
  • 消息推送的三种常见方式:轮询、SSE、WebSocket
  • 【设计模式】 原型模式
  • Apache EnumUtils枚举工具类
  • pycharm如何设置对应的python解释器
  • C++逆向输出一个字符串(三)
  • ZYNQ 定时器
  • Java反射与动态代理学习笔记
  • 实现 SpringBoot 程序加密,禁止 jadx 反编译
  • Kubeadm部署Kubernetes-v1.30.1【容器运行时containerd】
  • HOT100--Day14--543. 二叉树的直径,102. 二叉树的层序遍历,108. 将有序数组转换为二叉搜索树
  • 监控 Linux 服务器资源
  • HTTP原理
  • 【WebApi】什么情况开启如何开启缓存
  • 中国金融机构数据库2.0-许可证、机构设立、退出、失控信息2007-2023.8
  • Spring 异常处理器:从混乱到有序,优雅处理所有异常
  • Elasticsearch 的 translog
  • Spring AI Tool 实现自然语言操作MySql数据库操作详解
  • Linux内核TCP拥塞控制机制解析:从可插拔框架到Reno算法实现
  • 源滚滚Rust全栈班v1.02 无符号整数详解
  • 2025最新超详细FreeRTOS入门教程:第四章 FreeRTOS消息队列