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

Python模块篇(五)

模块

    • 模块与包
      • 模块的导入与使用
      • 标准库的常用模块
      • 第三方库的安装与使用(如:pip工具)

模块与包

模块是一个包含 Python 代码的文件,通常以 .py 作为扩展名。一个模块可以包含函数、类、变量,以及可执行的代码段。模块的作用是将代码分割成逻辑上独立的部分,以便更好地组织和复用

包是一个包含多个模块的目录。包通过在目录中包含一个特殊的 init.py 文件来区分普通目录和包目录。init.py 文件可以是空的,也可以包含包的初始化代码

模块的导入与使用

在 Python 中,导入和使用模块可以通过几种不同的方式来实现

  • 使用 import 语句导入整个模块
    这种方式导入整个模块,然后通过模块名访问其中的函数、类或变量
# math_operations.py
def add(a, b):return a + bdef subtract(a, b):return a - b

导入并使用模块

import math_operationsresult = math_operations.add(5, 3)
print(result)  # 输出:8result = math_operations.subtract(5, 3)
print(result)  # 输出:2
  • 使用 from … import … 导入模块中的指定部分
    这种方式可以只导入模块中的某个函数、类或变量,直接使用而不需要前缀模块名
from math_operations import add, subtractresult = add(5, 3)
print(result)  # 输出:8result = subtract(5, 3)
print(result)  # 输出:2
  • 使用 as 关键字给模块或函数起别名
    如果模块名或函数名较长,可以使用 as 关键字起一个别名,以简化后续的调用
import math_operations as moresult = mo.add(5, 3)
print(result)  # 输出:8from math_operations import subtract as subresult = sub(5, 3)
print(result)  # 输出:2
  • 导入包中的模块
    当模块位于包中时,可以使用点号 (.) 来导入包中的模块
math_utils/__init__.pybasic_operations.pyadvanced_operations.py

可以导入并使用 basic_operations.py 中的函数

from math_utils.basic_operations import addresult = add(5, 3)
print(result)  # 输出:8

标准库的常用模块

Python 的标准库中包含了大量预先编写好的模块,可以直接导入并使用,极大地方便了开发。以下是一些常用的标准库模块及其功能简介

  • os 模块
    os 模块提供了与操作系统交互的功能,比如文件和目录操作、环境变量、进程管理等。

常用功能:

  • os.listdir(path):列出指定目录下的文件和子目录。
  • os.mkdir(path):创建目录。
  • os.remove(path):删除文件。
  • os.rename(src, dst):重命名文件或目录。
  • os.getenv(key):获取环境变量的值。
import oscurrent_dir = os.getcwd()  # 获取当前工作目录
print(current_dir)files = os.listdir('.')  # 列出当前目录下的文件和目录
print(files)
  • sys 模块
    sys 模块提供了与 Python 解释器相关的功能和变量,可以访问命令行参数、控制 Python 运行环境等。

常用功能:

  • sys.argv:获取命令行参数列表。
  • sys.exit([status]):退出程序,status 是退出状态码。
  • sys.path:获取模块的搜索路径
import sysprint(sys.argv)  # 输出命令行参数列表
sys.exit(0)  # 正常退出程序
  • datetime 模块
    datetime 模块用于处理日期和时间,可以创建、操作日期和时间对象。

常用功能:

  • datetime.datetime.now():获取当前日期和时间。
  • datetime.date(year, month, day):创建一个日期对象。
  • datetime.timedelta(days=, seconds=, …):表示时间间隔,用于时间的加减运算。
from datetime import datetime, timedeltanow = datetime.now()
print(now)yesterday = now - timedelta(days=1)
print(yesterday)
  • math 模块
    math 模块提供了数学函数和常数,如三角函数、对数、平方根等。

常用功能:

  • math.sqrt(x):计算平方根。
  • math.sin(x)、math.cos(x):计算三角函数。
  • math.log(x, base):计算对数。
import mathprint(math.sqrt(16))  # 输出:4.0
print(math.sin(math.pi / 2))  # 输出:1.0
  • random 模块
    random 模块用于生成随机数,可以用于随机选择、打乱顺序等。

常用功能:

  • random.random():生成 0 到 1 之间的随机浮点数。
  • random.randint(a, b):生成 [a, b] 之间的随机整数。
  • random.choice(seq):从序列中随机选择一个元素。
  • random.shuffle(seq):随机打乱序列。
import randomprint(random.random())  # 输出一个随机浮点数
print(random.randint(1, 10))  # 输出 1 到 10 之间的随机整数
  • re 模块
    re 模块用于正则表达式操作,可以进行复杂的字符串匹配、查找、替换等。

常用功能:

  • rre.match(pattern, string):从字符串开头进行正则匹配。
  • rre.search(pattern, string):在字符串中搜索符合正则的内容。
  • rre.findall(pattern, string):查找所有匹配的内容。
import repattern = r'\d+'  # 匹配一个或多个数字
text = "There are 123 apples and 456 oranges."matches = re.findall(pattern, text)
print(matches)  # 输出:['123', '456']
  • json 模块
    json 模块用于处理 JSON 数据,可以将 Python 对象与 JSON 数据进行相互转换。

常用功能:

  • json.dumps(obj):将 Python 对象转换为 JSON 字符串。
  • json.loads(json_str):将 JSON 字符串转换为 Python 对象。
  • json.dump(obj, file):将 Python 对象以 JSON 格式保存到文件中。
  • json.load(file):从文件中读取 JSON 数据并转换为 Python 对象。
import jsondata = {'name': 'Alice', 'age': 25}
json_str = json.dumps(data)
print(json_str)  # 输出:{"name": "Alice", "age": 25}data_from_json = json.loads(json_str)
print(data_from_json)  # 输出:{'name': 'Alice', 'age': 25}

第三方库的安装与使用(如:pip工具)

在 Python 中,第三方库 是由社区或开发者提供的额外功能包,可以通过包管理工具 pip 来安装和管理。这些库可以极大地扩展 Python 的功能

pip 工具简介

  • pip 是 Python 官方推荐的包管理工具,用于安装、升级和卸载 Python 包。使用 pip,你可以从 * Python 包索引(PyPI)中下载和安装各种第三方库。

现在基本使用pip3,pip 和 pip3 都是用于安装和管理Python包的工具,但它们的区别主要在于它们所对应的Python版本:
pip: 通常与 Python 2.x 版本绑定。当你使用 pip 命令时,它会默认安装和管理 Python 2.x 版本的包。
pip3: 专门用于 Python 3.x 版本。当你使用 pip3 命令时,它会默认安装和管理 Python 3.x 版本的包。

  • 安装第三方库
    要安装一个第三方库,比如requests(一个流行的HTTP库)
pip3 install requests

在联网环境中下载库,不安装

pip3 download requests -d /path/to/save

离线安装库

pip3 install --no-index --find-links=/path/to/save requests

升级第三方库

pip3 install --upgrade requests

卸载第三方库

pip3 uninstall requests

查看已安装的库

pip3 list

查看库的详细信息

pip3 show requests
  • 使用requirements文件安装库
    在实际项目中,通常会使用一个requirements.txt文件来列出项目所需的所有库及其版本
pip3 install -r requirements.txt

生成requirements文件

pip3 freeze > requirements.txt

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 2408d,加@GC作为函数属性
  • Java基于数据库、乐观锁、悲观锁、Redis、Zookeeper分布式锁的简单案例实现(保姆级教程)
  • 面试题:MQ
  • seata的使用(SpringBoot项目整合seata)
  • RabbitMQ-消息队列延迟队列一
  • Dockerfile搭建LNMP
  • Linux安装jdk8,tomcat和mysql
  • 【layUI】只能选某个特定区间的日历
  • 24/8/18算法笔记 目标导向强化学习
  • 【C++】C++11新增特性
  • Fabric:关于链码的编写及部署的问题记录
  • 在CodeBlocks搭建SDL2工程OLED液晶模拟器虚拟OLED单色液晶(128x64)
  • 使用MongoDB构建AI:Story Tools Studio将生成式AI引入Myth Maker AI游戏
  • vue中点击导航栏,动态改变样式,经典写法
  • Linux网络:基于OS的网络架构
  • [nginx文档翻译系列] 控制nginx
  • Cookie 在前端中的实践
  • egg(89)--egg之redis的发布和订阅
  • ES6简单总结(搭配简单的讲解和小案例)
  • JavaScript设计模式与开发实践系列之策略模式
  • jquery cookie
  • LeetCode刷题——29. Divide Two Integers(Part 1靠自己)
  • Netty 4.1 源代码学习:线程模型
  • Odoo domain写法及运用
  • Redis的resp协议
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spring技术内幕笔记(2):Spring MVC 与 Web
  • SQL 难点解决:记录的引用
  • WebSocket使用
  • 对象引论
  • 机器学习 vs. 深度学习
  • 开放才能进步!Angular和Wijmo一起走过的日子
  • 前端js -- this指向总结。
  • 前端面试之CSS3新特性
  • 浅谈Golang中select的用法
  • 如何编写一个可升级的智能合约
  • 一文看透浏览器架构
  • 一些关于Rust在2019年的思考
  • 转载:[译] 内容加速黑科技趣谈
  • 摩拜创始人胡玮炜也彻底离开了,共享单车行业还有未来吗? ...
  • 支付宝花15年解决的这个问题,顶得上做出十个支付宝 ...
  • ​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
  • ​Python 3 新特性:类型注解
  • ​字​节​一​面​
  • # Maven错误Error executing Maven
  • (0)Nginx 功能特性
  • (1)(1.8) MSP(MultiWii 串行协议)(4.1 版)
  • (2024,Flag-DiT,文本引导的多模态生成,SR,统一的标记化,RoPE、RMSNorm 和流匹配)Lumina-T2X
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (6)STL算法之转换
  • (附源码)ssm高校志愿者服务系统 毕业设计 011648
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (每日一问)设计模式:设计模式的原则与分类——如何提升代码质量?
  • (七)Java对象在Hibernate持久化层的状态
  • (十)Flink Table API 和 SQL 基本概念