Python 从入门到实战25(模块)

news2024/12/26 11:40:00

        我们的目标是:通过这一套资料学习下来,通过熟练掌握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 其中一个目录下。

今天先写学习到这里了,每天进步一点点。明天也要加油啊!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2158382.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux 进程间通信(管道)

目录 一.理解进程间通信 1.进程间通信的意义 2.进程间如何实现通信呢? 二.匿名管道 1.匿名管道的底层原理 引用计数的应用 2.匿名管道代码实现 a.代码的整体框架 b.写接口 c.读接口 d.子进程资源回收 3.匿名管道的官方接口 4.*匿名管道四种情况和五种特…

Leetcode 2246. 相邻字符不同的最长路径(一般树)树形dp C++实现

问题:Leetcode 2246. 相邻字符不同的最长路径 给你一棵 树(即一个连通、无向、无环图),根节点是节点 0 ,这棵树由编号从 0 到 n - 1 的 n 个节点组成。用下标从 0 开始、长度为 n 的数组 parent 来表示这棵树&#x…

数据结构——顺序表、链表

目录 前言 一,数据结构 1,什么是数据结构? 2,有什么类型? 二,顺序表 1,线性表 2,顺序表基本结构 3,动态顺序表的功能实现 三,链表 1,链…

Go 1.19.4 路径和目录-Day 15

1. 路径介绍 存储设备保存着数据,但是得有一种方便的模式让用户可以定位资源位置,操作系统采用一种路径字符 串的表达方式,这是一棵倒置的层级目录树,从根开始。 相对路径:不是以根目录开始的路径,例如 a/b…

torch.nn系列函数学习 --- Conv2d函数

该函数的官方文档: https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html#torch.nn.Conv2d torch.nn.Conv2d(in_channels, out_channels, kernel_size, stride1, padding0, dilation1, groups1, biasTrue, padding_modezeros, deviceNone, dtypeNone)…

排序题目:将矩阵按对角线排序

文章目录 题目标题和出处难度题目描述要求示例数据范围 前言解法思路和算法代码复杂度分析 题目 标题和出处 标题:将矩阵按对角线排序 出处:1329. 将矩阵按对角线排序 难度 5 级 题目描述 要求 矩阵对角线是一条从矩阵最上面行或者最左侧列中的某…

CentOS Linux教程(6)--CentOS目录

文章目录 1. 根目录2. cd目录切换命令3. CentOS目录介绍4. pwd命令介绍5. ls命令介绍5.1 ls5.2 ls -a5.3 ls -l 1. 根目录 Windows电脑的根目录是计算机(我的电脑),然后C盘、D盘。 Linux系统的根目录是/,我们可以使用cd /进入根目录,然后使…

共享打印机,局域网搜不到

如果共享打印机后,局域网内其余机器检索不到 1. 排查 是否启用来宾账户(Guest) 2. 网络和共享中心->更改高级共享设置->启用网络发现、启用文件和打印机共享、关闭密码保护共享 排查基本可以解决搜索不到打印机问题

Transformer动画讲解

**Transformer工作原理**** **一、**** ******GPT的核心是Transformer******** *GPT* : **GPT(Generative Pre-trained Transformer)**** ****是一种基于单向Transformer解码器的预训练语言模型,它通过在大规模语料库上的无监督…

MatrixOne 助力某电信运营商构建低成本高性能车联网管理系统

客户基本情况 该电信运营商在物联网领域深耕多年,致力于为企业和个人提供全面的物联网解决方案,包括智能连接、设备管理、数据采集与分析等核心服务。凭借其强大的网络覆盖和技术优势,该运营商为各行业提供高效、安全、可靠的物联网服务&…

风速传感器一文浅谈 了解自然的力量

产品概述 本产品主要采用优质聚合物碳纤维为原材料,具有良好的防腐、防侵蚀等特点,能够保证仪器长期使用不起锈,同时配合内部顺滑的轴承系统,确保了信息采集的准确性。外型小巧轻便,便于携带和组装,三杯设…

MCU和YT9218交换机通过RMII连接

1、可以通过带RMII的MCU和EXT1端口连接,将MCU配置为RMII 100M/全双工就可以通 2、原先在这里改SW配置, 一直不通 3、后来通过api调用可以通 这样改: 在初始化后,添加下面代码 //使能RMII,phy模式 #define Port5 …

【LeetCode】动态规划—使用最小花费爬楼梯(附完整Python/C++代码)

动态规划—#746. 使用最小花费爬楼梯 前言题目描述基本思路1. 问题定义:2. 理解问题和递推关系:3. 解决方法:4. 进一步优化:5. 小总结: 代码实现Python3代码实现Python 代码解释C代码实现C 代码解释 总结: 前言 在这个问题中,我们有一个数组 c o s t [ ] cost[] c…

单细胞SCENIC简单可视化分析学习和整理

SCENIC教程中给出三个方法进行下游的可视化分析,分别可以选择网页(SCope)平台,R或者python进行分析。 1、网页版:https://scope.aertslab.org/ 把数据从左侧工具栏处上传之后就可以个性化分析了~ 2、R和Python就殊途同归啦~ 笔者基于githu…

linux/CentOS 开机启动程序

前言 TencentOS Server 3.1 (TK4)适用于自己编写启动脚本的情况 编写启动脚本 比如启动tomcat,kaijiqidong_tomcat.sh #!/bin/bashecho "kaijiqidong_tomcat on date ." >> kaijiqidong_tomcat.log 2>&1cd /x/xx/xxx sh /x/tomcat/bin/s…

老照片修复软件有哪些?6个工具轻松搞定

在回忆的长廊中,老照片承载着岁月的痕迹和珍贵的记忆。 然而,时间的流逝往往让这些宝贵的瞬间变得模糊不清。幸运的是,现代科技赋予了我们修复这些老照片的能力。 面对市场上众多的老照片自动修复软件,选择一个合适的工具变得尤…

Apache APISIX学习(1):介绍、docker启动

一、介绍 Apache APISIX 是一个动态、实时、高性能的 API 网关, 提供负载均衡、动态上游、灰度发布、服务熔断、身份认证、可观测性等丰富的流量管理功能。你可以把 Apache APISIX 当做流量入口,来处理所有的业务数据,包括动态路由、动态上游…

得物自建 Redis 无人值守资源均衡调度设计与实现

目录: 一、为什么要做资源均衡调度 二、为什么要做自动化资源均衡调度 三、如何合理选择迁移节点 四、如何保障迁移过程中可靠性1. 添加从节点2. 检查同步数据正常3. 执行主从切换4. 检查主从切换正常5. 删除待迁移节点6. 消息通知 五、迁移任务管理展示 六、总结 …

户用光伏项目难管理,到底该怎么办?

一、鹧鸪云光伏业务管理软件:一站式管理利器 鹧鸪云光伏业务管理软件,作为一款专为光伏行业量身定制的智能化管理工具,集成了项目管理、运维管理、数据分析、用户服务等多功能模块于一体,旨在通过数字化手段,实现户用…

Nature Genetics|三代测序微量建库技术:媲美WGBS的直接甲基化检测

DNA修饰和甲基化是理解基因调控机制的关键。以往,我们的经验表明,使用三代测序从未经扩增的长DNA模板中同时读取序列信息和碱基修饰,需要投入大量的DNA样本来构建文库。 今天,小编带大家看一篇2024年发表于《Nature Genetics》的…