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

Python语法系列博客 · 第5期[特殊字符] 模块与包的导入:构建更大的程序结构

上一期小练习解答(第4期回顾)

✅ 练习1:判断偶数函数
def is_even(num):return num % 2 == 0print(is_even(4))  # True
print(is_even(5))  # False

✅ 练习2:求平均值

def avg(*scores):return sum(scores) / len(scores)print(avg(85, 90, 95))  # 输出 90.0

✅ 练习3:lambda 表达式排序

words = ["apple", "kiwi", "banana", "pear"]
words.sort(key=lambda x: len(x))
print(words)  # ['kiwi', 'pear', 'apple', 'banana']

本期主题:模块、包与标准库

模块和包是 Python 中代码复用的关键机制,理解它们能帮助你构建更大的工程。

5.1 什么是模块(module)

模块是一个 .py 文件,内部定义了变量、函数、类等。

✅ 示例:

假设我们有一个文件 math_utils.py

# math_utils.py
def add(a, b):return a + bdef sub(a, b):return a - b

我们可以在另一个文件中使用它:

import math_utilsprint(math_utils.add(3, 4))  # 输出 7

5.2 模块导入方式

✅ 方式1:导入整个模块
import math
print(math.sqrt(9))

 ✅ 方式2:导入模块中特定成员

from math import sqrt
print(sqrt(9))  # 直接使用 sqrt

✅ 方式3:导入并起别名

import numpy as np
print(np.array([1, 2, 3]))

5.3 自定义模块

你可以自己创建模块,只需将函数或类写在 .py 文件中即可。比如创建 my_utils.py

def greet(name):print(f"Hello, {name}")

在主程序中使用:

import my_utils
my_utils.greet("Tom")

✅ 注意:自定义模块需放在当前目录或 Python 路径中才能被导入。

5.4 包(package)

是一个包含 __init__.py 文件的文件夹,它可以包含多个模块或子包。

✅ 示例结构:

my_package/
├── __init__.py
├── file1.py
├── file2.py


使用方式

from my_package import file1
file1.function_name()

5.5 Python 标准库简介

Python 自带了很多强大的标准库,不需安装,直接导入即可。

模块用途
os文件/目录操作
sys系统参数和环境
math数学计算
random随机数
datetime时间处理
re正则表达式
json读写 JSON
collections高级数据结构

✅ 示例:使用 random 生成随机数 

import random
print(random.randint(1, 100))  # 1 到 100 之间的随机整数

 

5.6 第三方库的安装和导入(扩展知识)

通过 pip 命令可以安装第三方库:

pip install requests

安装后即可在代码中导入使用:

import requests
response = requests.get("https://www.example.com")
print(response.status_code)

 

本期小练习

  1. 创建一个模块 string_tools.py,编写一个函数 reverse_string(s),返回字符串反转结果。

  2. 编写一个包 my_math,其中包含 basic.pyadvanced.py 两个模块,分别定义加法函数和平方根函数。

  3. 使用标准库 random 随机生成一个长度为6的验证码(由数字和字母组成)。

小结:

这一期你了解了 Python 模块和包的基本概念、导入方式、如何自定义模块与包,并初步接触了标准库和第三方库。
这为你构建更大规模的 Python 项目打下基础!

第6期预告:

下一期我们将进入:

  • 文件读写操作

  • 文本处理基础

  • with语句和文件关闭机制

 

 

 

 

 

 

 

http://www.xdnf.cn/news/475.html

相关文章:

  • 验证Kubernetes的服务发现机制
  • 【信息系统项目管理师】高分论文:论信息系统项目的干系人管理(ERP运营管理系统)
  • 大模型如何重塑未来:从技术突破到商业应用
  • leetcode0113. 路径总和 II - medium
  • Linux系统:详解进程等待wait与waitpid解决僵尸进程
  • cJSON_Print 和 cJSON_PrintUnformatted的区别
  • MinnowBoard MAX单板UEFI BIOS代码编译教程
  • 使用AOP完成添加日志
  • 【AI提示词】IT专家顾问
  • 文件上传及验证绕过漏洞
  • Delphi 常用关键字收录
  • 基础智能体的进展与挑战第 6 章【情绪建模】
  • Python遥感开发之Hurst指数的实现
  • Zookeeper的典型应用场景?
  • Keil MDK中禁用半主机(No Semihosting)
  • 齐次坐标变换+Unity矩阵变换
  • 【Tauri2】026——Tauri+Webassembly
  • 代谢组数据分析(二十四):基于tidymass包从质谱原始数据到代谢物注释结果的实践指南
  • vue3 watch和watchEffect 的用法和区别
  • 计算机视觉算法实现——智能座椅坐姿识别
  • 基于GRPO将QWEN训练为和deepseek一样的推理模型!
  • linux kernel irq相关函数详解
  • 国产的 Java Solon v3.2.0 发布(央企信创的优选)
  • Day10【基于encoder- decoder架构实现新闻文本摘要的提取】
  • 第3章 垃圾收集器与内存分配策略《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》
  • 从0开发一个unibest+vue3项目,使用vscode编辑器开发,总结vue2升vue3项目开始,小白前期遇到的问题
  • Flask应用部署通用指南
  • [Windows] Wireshark 网络抓包工具 v4.4.6
  • 【MATLAB海洋专题】历史汇总
  • C++学习之路,从0到精通的征途:vector类的模拟实现