Python自定义模块的创建与使用
作者:不认输的小菜鸡 发布时间:2021-01-05 20:47:14
一、前言
在Python提供了强大的模块支持,主要体现为不仅在Python标准库中包含了大量的模块(称为标准模块),而且还有很多第三方模块,另外开发者自己也可以开发自定义模块。通过这些强大的模块支持,将极大地提高我们的开发效率。
二、模块的概述
模块的英文是Module,可以认为是一盒(箱)主题积木,通过它可以拼出某一主题的东西。这与函数不同,一个函数相当于一块积木,而一个模块包括很多函数,也就是很多积木,所以也可以说模块相当于一盒积木。
在Python中,一个扩展名为“.py”的文件就称之为一个模块。通常情况下,我们把能够实现某一特定功能的代码放置在一个文件中作为一个模块,从而方便其他程序和脚本导入并使用。另外,使用模块也可以避免函数名和变量名冲突。
我们知道对于Python代码可以写在一个文件中,但是随着程序不断变大,为了维护,需要将其分为多个文件,这样可以提高代码的可维护性,使用模块还可以提高代码的可重用性。即编写好一个模块后,只要是实现该功能的程序,都可以导入这个模块来实现。
三、自定义模块
在Python中,自定义模块有两个作用,一个是规范代码,让代码更容易阅读,另外一个是方便其他程序使用已编好的代码,提高开发效率。要实现自定义模块主要分为两部分,一部分是创建模块,另一部分是导入模块。
1.创建模块
创建模块可以将模块中相关的代码(变量定义和函数定义等)编写在一个单独的文件中,并且将该文件命名为“模块名+.py”的形式,也就是说,创建模块,实际就是创建一个.py文件。
注意:
创建模块时,设置的模块名尽量不要与Python自带的标准模块名称相同
模块文件的扩展名必须是“.py”
2.使用import语句导入模块
创建模块后,就可以在其他程序中使用该模块了。要使用该模块需要先以模块的形式加载模块中的代码,这可以使用import语句实现。import语句的基本语法格式如下:
import modulename [as alias]
参数说明:
modulename:要导入模块的名称
[as alias]:为模块起的别名
例如,导入一个名称为test的模块,并执行该模块中的getInfo()函数,代码如下:
import test # 导入test模块
test.getInfo() # 执行模块中的getInfo()函数
可以使用关键字 as 将导入模块起个别名,代码如下:
import test as m # 导入test模块,并将test别名为m
m.getInfo() # 执行模块中的getInfo()函数
使用import一次可以导入多个模块,在导入多个模块时,模块与模块之间用逗号“,”隔开。例如,同时导入test.py、data.py、tips.py 3个模块文件,代码如下:
import test,data,tips
虽然一次可以导入多个模块,但不建议大家使用这种方法。
3.使用from…import语句导入模块
在使用import语句导入模块时,每一次执行import语句都会创建一个新的命名空间(namespace),并且在命名空间中执行与.py文件相关的所有语句。在执行时,需要在具体的变量、函数和类名前加上“模块名.”前缀。如果不想在每次导入模块时都创建一个新的命名空间,而是将具体的定义导入当前的命名空间中,这时可以使用from…import语句。使用from…import语句导入模块后,不需要再添加前缀,直接通过具体的变量、函数和类名等访问即可。
from…import语句的语法格式如下:
from modelname import member
参数说明:
modelname:模块名称,区分字母大小写,需要和定义模块时设置的模块名称的大小写保持一致。
member:用于指定要导入的变量、函数或者类等。可以同时导入多个定义,各个定义之间用逗号“,”隔开。如果想导入全部定义,也可以使用通配符星号“*”代替。
例如,通过下面3条语句都可以从模块导入指定的定义:
from test import getInfo # 导入test模块的getInfo()函数
from test import getInfo,showInfo # 导入test模块的getInfo()和showInfo()函数
from test import * # 导入test模块的全部定义(包括变量和函数)
注意:
在使用from…import语句导入模块中定义时,需要保证所有导入的内容在当前的命名空间中是唯一的,否则将出现冲突,后导入的同名变量、函数或者类会覆盖先导入的。这时就需要使用import语句进行导入了。
附:python打包用户自定义模块
假设需要打包的模块文件名为my.py,打包模块需要新建的一个脚本setip.py,然后在脚本下输入如下的内容:
from disutils.core import setup
setup{name = 'my',version = '1.0',py_modules = ['my']}
以管理员身份运行cmd,进入my.py的目录,执行下面的命令即可打包:
python setup.py sdist
运行后在该目录下方出现一个文件夹dist,进入这个文件夹,会出现一个my-1.0.zip文件。
将该压缩包放在sys.path的目录下,解压,以管理员身份运行cmd,进入解压的目录,执行下方的命令即可自动安装my模块。
python setup.py install
完成安装后,即可加载my模块:
import my
来源:https://blog.csdn.net/weixin_45191386/article/details/124576153


猜你喜欢
- 不同的色彩空间中对图片的色彩体现有很大不同#色彩空间的相互转换:最常见的是HSV与RGB,YUV与RGB的相互转换#常见色彩空间有:#RGB
- 1.抽象类抽象类机制中总是要定义一个公共的基类,而将特定的细节留给继承者来实现。通过抽象概念,可以在开发项目中创建扩展性很好的架构。任何一个
- 名词解释断号:比如,连续生成的编号,由于某种操作(通常为删除)后,产生不连续的编号,我们将这种不连续的编号称为断号。例如,数据库中有一个字段
- 1. map的使用golang中的map是一种数据类型,将键与值绑定到一起,底层是用哈希表实现的,可以快速的通过键找到对应的值。类型表示:m
- 一、要求较小的精度将精度高的浮点数转换成精度低的浮点数。1.round()内置方法round()不是简单的四舍五入的处理方式。>>
- 本文通过实例代码介绍了如何在jscript和vbscript中使用操作FileSystemObject(fso)对象模式来编程.
- 问题你想定义一个函数或者方法,它的一个或多个参数是可选的并且有一个默认值。解决方案定义一个有可选参数的函数是非常简单的,直接在函数定义中给参
- Tkinter 实现上述功能并不复杂,只要使用 Tkinter 的相关组件和一些简单的逻辑处理即可,在编写这个案例的过程中大家要做到温故而知
- 在做前端界面开发的时候,遇到需要改变颜色的需求,就需要使用颜色选择器。针对这个问题,第一想法,自然是H5提供了input color,可以实
- 在Spring Boot应用中连接多个数据库或数据源可以使用多种方式,下面介绍两种常用的方法:1、使用Spring Boot官方支持的多数据
- Redis持久化机制实现原理是什么?流程是什么?持久化就是把内存中的数据存放到磁盘中,防止宕机后内存数据丢失。按照指定的时间间隔内将内存的数
- stylus及stylus-loader版本问题安装下面指定本版就解决了:"stylus": "^0.54.7
- 前段时间我通过观察韩国网站和其他作品发现了普遍存在黄金分割这样一个规律,不过只跟色相有关,明度、纯度还没做研究,今天看到论坛一篇“网页配色之
- css可以处理16,777,216颜色,可以使用名字、rgb值或十六进制代码。red红色等同于 rgb(255,0,0) &nbs
- 1. 不要让用户先注册再去选商品。顾客们是来买东西的,不是来填表单的。所以需要确保用户在付款过程中完成了注册,而不是付款前就去注册,也不是让
- Go 单元测试工具测试分为4个层次单元测试:对代码进行测试集成测试:对一个服务的接口测试端到端测试(链路测试):从一个链路的入口输入测试用例
- 使用axios遇到的相对路径和绝对路径问题部分依赖说明:"vue": "^2.5.2","
- 一、为表创建自增长自段有两种,一种是不同的表使用各自的Sequence,方法如下: 1、在Oracle sequence首先创建sequen
- MySQL中concat函数 使用方法:CONCAT(str1,str2,…)返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,
- vue router路由嵌套不显示问题的解决方法,具体内容如下路由嵌套,vue2.0 router中嵌套路由不成功,如何解决?我先说下我的需