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

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 其中一个目录下。

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • JSP(Java Server Pages)基础使用
  • D盘格式化了,数据怎么恢复?
  • 【JavaWeb】二、HTML 入门
  • 跨境专线的网速收到什么影响
  • python画图1
  • 【艾思科蓝】前端框架巅峰对决:React、Vue与Angular的全面解析与实战指南
  • 巨潮股票爬虫逆向
  • python脚本转mac app+app签名公正
  • Fyne ( go跨平台GUI )中文文档- 架构 (八)完结
  • 内网私有化聊天软件:哪些企业类型最受益?
  • Fyne ( go跨平台GUI )中文文档-绘图和动画(三)
  • 使用Charles抓包Android App数据
  • PCIe进阶之TL:Completion Rules TLP Prefix Rules
  • Linux(Centos7)系统下给已有分区进行扩容
  • CMake教程(七):添加系统检查
  • [iOS]Core Data浅析一 -- 启用Core Data
  • 【mysql】环境安装、服务启动、密码设置
  • 【腾讯Bugly干货分享】从0到1打造直播 App
  • Android Volley源码解析
  • Essential Studio for ASP.NET Web Forms 2017 v2,新增自定义树形网格工具栏
  • oschina
  • React的组件模式
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • TypeScript迭代器
  • Vue.js源码(2):初探List Rendering
  • 聊聊flink的TableFactory
  • 实现菜单下拉伸展折叠效果demo
  • 一文看透浏览器架构
  • FaaS 的简单实践
  • Prometheus VS InfluxDB
  • ​浅谈 Linux 中的 core dump 分析方法
  • ​如何在iOS手机上查看应用日志
  • ###C语言程序设计-----C语言学习(6)#
  • #NOIP 2014# day.1 T2 联合权值
  • #pragma once与条件编译
  • #我与Java虚拟机的故事#连载05:Java虚拟机的修炼之道
  • (32位汇编 五)mov/add/sub/and/or/xor/not
  • (LeetCode 49)Anagrams
  • (Python第六天)文件处理
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (分布式缓存)Redis持久化
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (五)activiti-modeler 编辑器初步优化
  • (一)Dubbo快速入门、介绍、使用
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • *(长期更新)软考网络工程师学习笔记——Section 22 无线局域网
  • .config、Kconfig、***_defconfig之间的关系和工作原理
  • .net图片验证码生成、点击刷新及验证输入是否正确
  • .ui文件相关
  • /deep/和 >>>以及 ::v-deep 三者的区别
  • /usr/lib/mysql/plugin权限_给数据库增加密码策略遇到的权限问题
  • @EnableConfigurationProperties注解使用
  • [ vulhub漏洞复现篇 ] Apache APISIX 默认密钥漏洞 CVE-2020-13945
  • [20150629]简单的加密连接.txt
  • [bbk5179]第66集 第7章 - 数据库的维护 03