Python 从入门到实战25(模块)
我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。
上篇文章我们讨论了类继承的相关知识。今天我们将学习一下模块的相关基础知识。
1、模块概述
python 提供了强大的模块支持,有标准库中包含的大量的模块,还有第三方模块,以及自定义模块。模块的英文module。打个比方,一个函数相当于一个积木,而一个模块相当于一盒主题的积木,通过它可以拼出某一个主题的东西。这样我们可以认为一个模块中包含多个函数。
在python中,我们新建一个.py文件就被称为一个模块。
如下图所示,我们编写了my_function.py文件,里面包含很多个函数。

通常情况下,我们把能够实现某一特定功能的代码作为一个模块放置在一个文件中,以方便被其它程序或脚本导入并使用。同时要注意模块的名称要避免重复。
上图中所示就是自定义模块。
2、自定义模块
自定义模块有两个作用:一个是规范代码,让代码更容易阅读;
另外,方便其它程序可使用已经编好的代码,以提高开发效率。自定义模块需要先创建模块,然后再导入使用模块。
1)创建模块
可以在项目中新建python文件即可创建。如下图所示

像下图所示,我们创建的my_function.py文件

例如:编写了函数,
#定义一个过滤敏感广告次的函数,对于最好,最优秀,遥遥领先这种广告次替换展示
def replace_chars(string):
pattern = r'(最好)|(最优秀)|(遥遥领先)'
new_string = re.sub(pattern,"@^^@",string)
print(new_string)
2)通过import导入模块使用
我们创建了my_function.py文件,并且编写了函数,
导入模块的语法:import modulename [as alias]
modulename -----指要导入的模块名称,多个模块的话使用,隔开
as alias -----选填,给模块起一个别名
举个例子:
我们在main.py中使用my_function.py文件中的函数,
import my_function
advertisement_huawei= "华为华为,科技遥遥领先,是宇宙中最优秀的手机!"
my_function.replace_chars(advertisement_huawei)#注意要添加模块
这样就可以使用my_function.py中的函数了。注意调用函数需要加上模块名称

3)from … import 导入函数
导入语法:from modulename import member
member ----可以是要导入的变量、函数、类等
如上面的例子可以改下:
from my_function import replace_chars
advertisement_huawei= "华为华为,科技遥遥领先,是宇宙中最优秀的手机!"
replace_chars(advertisement_huawei)
此时,调用函数不需要前面加模块名称。
输出结果和上面的一致。
3、导入标准模块
导入标准模块,像math,我们可以使用其中的pi计算圆的面积
CTRL + 点击math 可以查看对应math模块

import math #导入模块math
#计算圆的面积
r = float(input("请输入圆的半径"))
area = math.pi * r * r
print("圆的面积为:{:.2f}".format(area))
参考输出:

4、模块搜索目录
使用import 导入模块时,会按照以下顺序去查找模块:
1)当前目录,即执行python脚本文件所在的目录进行查找;
2)在PYTHONPATH(环境变量)下的每个目录中进行查找
3)在python 的默认安装目录中查找
以上位置保存在标准模块sys的sys.path 变量中。下面查看以下目录;
import sys
print(sys.path)
查看输出:
['D:\\dewi\\project2024\\myListPractice\\pythonProject1', 'D:\\dewi\\project2024\\myListPractice\\pythonProject1', 'C:\\Users\\dewi\\python311.zip', 'C:\\Users\\dewi\\DLLs', 'C:\\Users\\dewi\\Lib', 'C:\\Users\\dewi', 'D:\\dewi\\project2024\\myListPractice\\pythonProject1\\.venv', 'D:\\dewi\\project2024\\myListPractice\\pythonProject1\\.venv\\Lib\\site-packages']
若是我们要导入的模块不在上面的路径目录,可以在PYTHONPATH变量中添加(这个网上很容易搜索到,就不展开讲)。
另外,我们也可以临时增加:
import list_learning #开始说找不到对应的模块

sys.path.append("D:\\dewi\\demo")
print(sys.path)
查看是不是在sys.path :

这种方法添加的目录只是在执行当前文件的窗口中有效,窗口关闭后即失效。
当然,最简单的是将我们的模块放到sys.path 其中一个目录下。
今天先写学习到这里了,每天进步一点点。明天也要加油啊!
相关文章:
Python 从入门到实战25(模块)
我们的目标是:通过这一套资料学习下来,通过熟练掌握python基础,然后结合经典实例、实践相结合,使我们完全掌握python,并做到独立完成项目开发的能力。 上篇文章我们讨论了类继承的相关知识。今天我们将学习一下模块的…...
Leetcode面试经典150题-172.阶乘后的零
给定一个整数 n ,返回 n! 结果中尾随零的数量。 提示 n! n * (n - 1) * (n - 2) * ... * 3 * 2 * 1 示例 1: 输入:n 3 输出:0 解释:3! 6 ,不含尾随 0示例 2: 输入:n 5 输出&a…...
【机器学习】揭秘GBDT:梯度提升决策树
目录 🍔 提升树 🍔 梯度提升树 🍔 举例介绍 3.1 初始化弱学习器(CART树) 3.2 构建第一个弱学习器(CART树) 3.3 构建第二个弱学习器(CART树) 3.4 构建第三个弱学习…...
Android Studio 2024 安装、项目创建、加速、优化
文章目录 Android Studio安装Android Studio项目创建Android Studio加速修改GRADLE_USER_HOME位置减少C盘占用空间GRADLE加速 修改模拟器位置减少C盘占用空间参考资料 Android Studio安装 下载android studio download android-studio-2024.1.2.12-windows.exe 或者 android-…...
JSP(Java Server Pages)基础使用
首先在web文件夹中新建一个jsp/jspx文件,这个文件就是jsp文件 <%--Created by IntelliJ IDEA.User: ***Date: 2024/9/23Time: 18:43To change this template use File | Settings | File Templates. --%> <% page contentType"text/html;charsetUTF-…...
数据结构 - 概述及其术语
经过上一章节《数据结构与算法之间有何关系?》的阐述,相信大家对数据结构多少有了点了解,今天我们将进入数据结构的正式学习中。 在计算机科学中,数据结构是一种数据管理、组织和存储的格式。它是相互之间存在一种或多种特定关系的…...
UE5——在线子系统
Unreal Engine 5 (UE5) 的在线子系统(Online Subsystem)实现多人在线游戏的原理涉及到网络编程和分布式系统设计中的多个方面。以下是该系统工作的一些核心概念和技术: 1. 客户端-服务器架构: - 大多数现代多人在线游戏采用客户端-服务器模型…...
9.23-部署项目
部署项目 一、先部署mariadb [rootk8s-master ~]# mkdir aaa [rootk8s-master ~]# cd aaa/ [rootk8s-master aaa]# # 先部署mariadb [rootk8s-master aaa]# # configmap [rootk8s-master aaa]# vim mariadb-configmap.yaml apiVersion: v1 kind: ConfigMap metadata:name: ma…...
非标独立设计选型--二十六--电磁阀的选型件算
电磁阀:电磁控制---自动化的关键 PLC ---- 继电器----电磁阀----调速阀----气缸 供气源--- 【电磁阀主要负责:换向,实现气缸的动作变化】 电磁阀有哪些参数是会影响到使用的? …...
flume系列之:出现数据堆积时临时增大sink端消费能力
flume系列之:出现数据堆积时临时增大sink端消费能力 一、背景二、增大sink端消费能力flume系列之:flume生产环境sink重要参数理解 一、背景 flume出现数据堆积,消费的数据持续堆积在channel中参数org_apache_flume_channel_channel1_channelfillpercentage的值大于0,并且持…...
SQL Server全方位指南:从入门到高级详解
本文将分为三大部分,逐步深入SQL Server的基础知识、进阶技巧和高级特性,旨在帮助从初学者到经验丰富的开发人员深入理解和使用SQL Server。 一、入门篇 1.1 什么是SQL Server? SQL Server 是由微软开发的关系型数据库管理系统(…...
【JavaSE】IO模型
IO,英文全称是 Input/Output,翻译过来就是输入/输出。我们听得挺多,就是磁盘 IO,网络 IO 等。IO 即输入/输出,到底谁是输入?谁是输出?IO 如果脱离了主体,会让人疑惑。 计算机角度的…...
手术缝合线合格品检测项目众多 线径又是其重要一环!
手术缝合线的合格与否,关系着使用及恢复情况,其品质的优劣非常重要,而要想得到合格的手术缝合线,则需要多种类型的仪器进行检测。其中线径就是重要一环,下面来看看线径检测仪,并简单介绍一下其他所需检测信…...
STM32 单片机最小系统全解析
STM32 单片机最小系统全解析 本文详细介绍了 STM32 单片机最小系统,包括其各个组成部分及设计要点与注意事项。STM32 最小系统在嵌入式开发中至关重要,由电源、时钟、复位、调试接口和启动电路等组成。 在电源电路方面,采用 3.3V 直流电源供…...
深度解析ElasticSearch:构建高效搜索与分析的基石原创
引言 在数据爆炸的时代,如何快速、准确地从海量数据中检索出有价值的信息成为了企业面临的重要挑战。ElasticSearch,作为一款基于Lucene的开源分布式搜索和分析引擎,凭借其强大的实时搜索、分析和扩展能力,成为了众多企业的首选。…...
【Python常用模块】_PyMySQL模块详解
课 程 推 荐我 的 个 人 主 页:👉👉 失心疯的个人主页 👈👈入 门 教 程 推 荐 :👉👉 Python零基础入门教程合集 👈👈虚 拟 环 境 搭 建 :👉👉 Python项目虚拟环境(超详细讲解) 👈👈PyQt5 系 列 教 程:👉👉 Python GUI(PyQt5)教程合集 👈👈…...
【算法思想·二叉树】最近公共祖先问题
本文参考labuladong算法笔记[拓展:最近公共祖先系列解题框架 | labuladong 的算法笔记] 0、引言 如果说笔试的时候经常遇到各种动归回溯这类稍有难度的题目,那么面试会倾向于一些比较经典的问题,难度不算大,而且也比较实用。 本…...
如何合并pdf文件,四款软件,三步搞定!
在数字化办公的浪潮中,PDF文档因其跨平台兼容性和安全性,成为了我们日常工作中不可或缺的一部分。然而,面对多个PDF文件需要整合成一个文件时,不少小伙伴可能会感到头疼。别担心,今天我们就来揭秘四款高效PDF合并软件&…...
仪表放大器AD620
AD623 是一款低功耗、高精度的仪表放大器,而不是轨到轨运算放大器。它的输入电压范围并不覆盖整个电源电压(轨到轨),但在单电源供电下可以处理接近地电位的输入信号。 AD620 和 AD623 都是仪表放大器,但它们在一些关键…...
【Qt网络编程】Tcp多线程并发服务器和客户端通信
目录 一、编写思路 1、服务器 (1)总体思路widget.c(主线程) (2)详细流程widget.c(主线程) (1)总体思路chat_thread.c(处理聊天逻辑线程&…...
日语AI面试高效通关秘籍:专业解读与青柚面试智能助攻
在如今就业市场竞争日益激烈的背景下,越来越多的求职者将目光投向了日本及中日双语岗位。但是,一场日语面试往往让许多人感到步履维艰。你是否也曾因为面试官抛出的“刁钻问题”而心生畏惧?面对生疏的日语交流环境,即便提前恶补了…...
shell脚本--常见案例
1、自动备份文件或目录 2、批量重命名文件 3、查找并删除指定名称的文件: 4、批量删除文件 5、查找并替换文件内容 6、批量创建文件 7、创建文件夹并移动文件 8、在文件夹中查找文件...
解决Ubuntu22.04 VMware失败的问题 ubuntu入门之二十八
现象1 打开VMware失败 Ubuntu升级之后打开VMware上报需要安装vmmon和vmnet,点击确认后如下提示 最终上报fail 解决方法 内核升级导致,需要在新内核下重新下载编译安装 查看版本 $ vmware -v VMware Workstation 17.5.1 build-23298084$ lsb_release…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
【C++从零实现Json-Rpc框架】第六弹 —— 服务端模块划分
一、项目背景回顾 前五弹完成了Json-Rpc协议解析、请求处理、客户端调用等基础模块搭建。 本弹重点聚焦于服务端的模块划分与架构设计,提升代码结构的可维护性与扩展性。 二、服务端模块设计目标 高内聚低耦合:各模块职责清晰,便于独立开发…...
JVM 内存结构 详解
内存结构 运行时数据区: Java虚拟机在运行Java程序过程中管理的内存区域。 程序计数器: 线程私有,程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都依赖这个计数器完成。 每个线程都有一个程序计数…...
Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
说明:这是一个机器学习实战项目(附带数据代码文档),如需数据代码文档可以直接到文章最后关注获取。 1.项目背景 在金融市场日益复杂和波动加剧的背景下,风险管理成为金融机构和个人投资者关注的核心议题之一。VaR&…...
【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
深入理解Optional:处理空指针异常
1. 使用Optional处理可能为空的集合 在Java开发中,集合判空是一个常见但容易出错的场景。传统方式虽然可行,但存在一些潜在问题: // 传统判空方式 if (!CollectionUtils.isEmpty(userInfoList)) {for (UserInfo userInfo : userInfoList) {…...
SQL Server 触发器调用存储过程实现发送 HTTP 请求
文章目录 需求分析解决第 1 步:前置条件,启用 OLE 自动化方式 1:使用 SQL 实现启用 OLE 自动化方式 2:Sql Server 2005启动OLE自动化方式 3:Sql Server 2008启动OLE自动化第 2 步:创建存储过程第 3 步:创建触发器扩展 - 如何调试?第 1 步:登录 SQL Server 2008第 2 步…...
