Python自定义模块的创建与使用

 更新时间:2022年05月05日 10:26:31   作者:不认输的小菜鸡  
这篇文章主要给大家介绍了关于Python自定义模块创建与使用的相关资料,文中还给大家分享了python打包用户自定义模块的方法,文中通过实例代码介绍的非常详细,需要的朋友可以参考下

一、前言

在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

总结

到此这篇关于Python自定义模块创建与使用的文章就介绍到这了,更多相关Python自定义模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pandas 缺失数据处理代码汇总

    Pandas 缺失数据处理代码汇总

    这篇文章主要介绍了Pandas 缺失数据处理代码汇总,在pandas中,缺失数据显示为NaN。缺失值有3种表示方法,np.nan,none,pd.NA,更多相关介绍需要的朋友可以参考下面文章内容
    2022-06-06
  • python日志模块logging案例详解

    python日志模块logging案例详解

    日志模块主要用于输出运行日志,可以设置输出日志的等级、日志保存路径、日志文件回滚等,这篇文章主要介绍了python日志模块logging,需要的朋友可以参考下
    2024-01-01
  • 通过实例学习Python Excel操作

    通过实例学习Python Excel操作

    这篇文章主要介绍了通过实例学习Python Excel操作,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • Python使用gTTS库实现文本转换为语音的详细步骤

    Python使用gTTS库实现文本转换为语音的详细步骤

    文本转换为语音(Text-to-Speech,简称TTS)技术是人工智能的重要组成部分,广泛应用于智能助手、导航系统、读屏软件和智能家居等领域,TTS技术使得机器能够将书面文字转换为自然流畅的语音,本文将介绍如何使用Python的gTTS库实现简单的TTS功能,需要的朋友可以参考下
    2024-07-07
  • python 模拟网站登录——滑块验证码的识别

    python 模拟网站登录——滑块验证码的识别

    这篇文章主要介绍了python 模拟网站登录——滑块验证码的识别,帮助大家更好的理解和学习使用python的爬虫技术,感兴趣的朋友可以了解下
    2021-03-03
  • python实现网上购物系统

    python实现网上购物系统

    这篇文章主要为大家详细介绍了python实现网上购物系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 四步教你学会打包一个新的Python模块

    四步教你学会打包一个新的Python模块

    当你安装应用程序时,通常是安装一个软件包,其中包含应用程序的可执行代码和重要文件。在 Linux上,软件一般被打包成RPM或DEB等格式,然而几乎每天都有新的Python模块发布,因此你很容易遇到一个尚未打包的Python模块。本文教你四步打包一个新的Python模块
    2022-09-09
  • Python使用multiprocessing实现一个最简单的分布式作业调度系统

    Python使用multiprocessing实现一个最简单的分布式作业调度系统

    mutilprocess像线程一样管理进程,这个是mutilprocess的核心,他与threading很是相像,对多核CPU的利用率会比threading好的多,通过本文给大家介绍Python使用multiprocessing实现一个最简单的分布式作业调度系统,需要的朋友参考下
    2016-03-03
  • 卷积神经网络(CNN)基于SqueezeNet的眼疾识别功能

    卷积神经网络(CNN)基于SqueezeNet的眼疾识别功能

    SqueezeNet是一种轻量且高效的CNN模型,它参数比AlexNet少50倍,但模型性能(accuracy)与AlexNet接近,这篇文章主要介绍了卷积神经网络(CNN)基于SqueezeNet的眼疾识别,需要的朋友可以参考下
    2023-08-08
  • python 并发编程 阻塞IO模型原理解析

    python 并发编程 阻塞IO模型原理解析

    这篇文章主要介绍了python 并发编程 阻塞IO模型原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08

最新评论