Python3进阶之开发必备的知识点-模块(包)的作用和使用详解

目录

模块的作用

模块的使用方法

引入模块示例

模块包

模块的搜索路径

总结


图片

更多关于Python的相关技术点,敬请关注公众号:CTO Plus后续的发文,有问题欢迎后台留言交流。

图片

接下来的一段时间我将总结关于【Python进阶系列】的一系列开发技术知识点的分享文章,主要为初学者从零基础到进阶再到高级和项目实战,结合目前最新的Python版本3.12来做代码示例的样式,并同时也会标注出与Python2的一些异同点。

然后关于Python的Web开发、爬虫开发、操作系统开发、网络安全开发应用领域这块,可以分别参考我的公众号CTO Plus【Flask进阶系列】、【Django进阶系列】、【DRF进阶系列】、【互联网分布式爬虫系列】和【网络安全系列】的内容,敬请关注,欢迎交流。

图片

原文:Python3进阶之开发必备的知识点-模块(包)的作用和使用详解

以下是【Python3进阶系列】的部分内容

图片

目标是每天必须更新一篇技术文章。最近,后台很多粉丝都在催更Python进阶、Django、DRF、Flask、FPGA等方面的文章,目前公众号CTO Plus所有文章全部由小编一人编写、组织、排版。当然还有日常的工作,所以只能每个周末写个好几篇,写完后还要找些应用场景示例敲下代码示例。时间确实不够用哇

所以我还得抓紧时间。每天晚上也赶赶,欢迎给个【赞】和【在看】哈。最后,有什么需求、疑问和催更,欢迎加群、后台留言、联系作者或QQ群留言。

上周末比较忙没码文章,所以前两篇给粉丝转载了两篇关于小姐姐穿搭方面的非技术类文章,粉丝克拉默(Cramer)算是本号的铁粉了

图片

,是一位非常漂亮温柔的小姐姐了,她最大爱好就是穿搭

图片

她的穿搭文章《梨形身材的今日份穿搭

克拉默爱穿搭

分享日常穿搭,可以联系作者哦

2篇原创内容

公众号

上面就是她的公众号,支持下铁粉吧,作为coder的你整天面向的都是对象,所以今天赶紧为你的对象(或自己)推荐配置一套吧。

本周技术类的文章分享时间还是非常紧张的吧

图片

在Python编程中,模块是一种组织和重用代码的方式。它是一个包含了函数、类和变量等定义的文件,可以被其他程序引用和调用。Python标准库中提供了大量的模块,而且还可以通过第三方库来扩展功能。在Python中,一个.py文件就构成一个模块。通过模块,你可以调用其它文件中的程序。

模块的作用

首先介绍下模块的作用:

1. 提供代码的组织和封装:将相关的函数、类和变量等封装在一个模块中,可以提高代码的可读性和可维护性,方便团队协作开发。

2. 实现代码的复用:模块可以在不同的程序中被引用和调用,避免重复编写相同的代码,提高开发效率,DRY原则。

3. 提供功能的扩展:通过引入第三方模块,可以扩展Python的功能,满足特定的需求。

模块的使用方法

1. 导入模块:我们可以使用import关键字导入模块,可以导入标准库模块、第三方库模块,以及自定义的模块。例如,import math导入了Python标准库中的math模块。

2. 使用模块中的函数和变量:通过模块名加点操作符来访问模块中的函数和变量。例如,math.sqrt(16)调用了math模块中的sqrt函数,计算16的平方根。

3. 别名导入:使用import ... as ...语法可以给模块指定别名,方便使用。例如,import math as m将math模块重命名为m,可以使用m.sqrt(16)调用sqrt函数。

4. 导入特定函数或变量:使用from ... import ...语法可以导入模块中的特定函数或变量,而不是整个模块。例如,from math import sqrt只导入math模块中的sqrt函数,可以直接使用sqrt(16)调用。

5. 导入所有函数和变量:使用from ... import *语法可以导入模块中的所有函数和变量,但不推荐使用,因为容易引起命名冲突。

示例如下:

# 导入模块中的所有功能from django import * # 给导入的功能起别名import numpy as np # 导入模块起一个 下划线 的别名import requests as _ # 导入整个模块import mathmath.pi # 导入特定功能from math import pi

引入模块示例

定义一个use_pkgs.py的主文件(入口文件),内容如下:

# 引入模块say_hello,并将模块say_hello重命名为say_hello01from utils01 import say_hello as say_hello01# 引入模块say_hello,并将模块say_hello重命名为say_hello02from utils02 import say_hello as say_hello02
print(say_hello01())print(say_hello02())

然后分别定义两个文件utils01.py、utils02.py

utils01.py内容如下

def say_hello(msg=""):    return f"hello {msg}, this is utils module01"

utils02.py内容如下

def say_hello(msg=""):    return f"hello {msg}, this is utils module02"

上面的代码use_pkgs.py中引入了两个模块utils01.py、utils02.py,这两个模块里面都有一个同名的say_hello()方法,那么如果直接导入进来使用的话,后面的代码调用时也不知道要调用哪一个,所以可以通过使用as给这个模块重命名一个别名,然后调用这个别名即可区分不同里面的相同方法(类、变量),这样一来我们就可以直接调用里面的方法了,运行后输出结果:

图片

还可以通过模块.对象(或方法、变量)的方式来调用引入模块中的某个对象(或方法、变量),接下来我们新建一个pkg01的目录,并分别在目录里面创建两个文件__init__.py(有了这个文件,代表这个目录是一个包)和module01.py(包中的模块)。

module01.py文件内容如下:

class DemoClass:    def __init__(self):        pass
    def show(self, msg=""):        print(msg)

def function(msg):    print(f"this is function {msg}")
my_blog = "https://mp.weixin.qq.com/s/0yqGBPbOI6QxHqK17WxU8Q"

use_pkgs.py文件中的内容如下:

from pkg01 import module01# 使用 . 的方式调用模块中的方法module01.function("Python3.12")# 调用模块中的变量print(module01.my_blog)
# 或者直接导入方法from pkg01.module01 import functionfunction("Python3.13")
# 导入类from pkg01.module01 import DemoClass# 实例化对象obj = DemoClass()# 调用对象的方法obj.show("my name is steverocket")

执行use_pkgs.py文件输出结果

图片

模块包

Python的模块包是一种组织和管理Python代码的方式。它们是包含Python代码的文件集合,通常包含一个主模块(主程序)和多个子模块(辅助程序),以及可能的其他文件和资源。

模块和包的主要目的是为了提高代码的可重用性和可维护性。通过将代码组织成模块和包,可以更好地组织代码结构,使其更易于阅读和维护。同时,通过使用包,可以将相关的模块组合在一起,方便管理和使用。

Python的模块和包还可以用于导入其他模块和包,从而扩展程序的功能。导入模块可以使用import语句,而导入包则需要指定包的完整名称。在导入模块或包后,可以使用相应的名称来访问其中的函数、类或变量等资源。

需要注意的是,Python的模块和包是相对独立的实体,它们可以独立地安装和使用。同时,Python还提供了许多标准库和第三方库,这些库都是以模块和包的形式提供的,可以方便地导入和使用。

通常,我们可以将功能相似的模块放在同一个文件夹中,构成一个模块包。然后通过import this_dir.module的方式引入this_dir文件夹中的module模块。

注意:该文件夹中必须包含一个__init__.py的文件,提醒Python,该文件夹为一个模块包。__init__.py可以是一个空文件。

模块的搜索路径

接下来总结下Python的模块的搜索路径顺序。

Python在启动时,会从一系列的目录中搜索模块。这些搜索路径形成了一个模块搜索路径(Module Search Path)。这个路径列表是由一系列的目录组成的,Python会在这个列表中的每一个目录下查找模块。

以下是Python模块搜索路径的主要组成部分,即Python会在以下路径中搜索它想要寻找的模块:

  • 脚本的目录(程序所在的文件夹):Python解释器首先会查找当前目录,也就是运行Python脚本的目录。

  • PYTHONPATH环境变量:这是在启动Python时设置的一个环境变量,可以用来修改模块搜索路径。PYTHONPATH环境变量包含一系列的目录,Python会在这些目录下查找模块。

  • 安装的第三方库目录:Python会在安装时设定的第三方库目录下查找模块。这些目录通常包括lib/pythonX.Y/site-packages(其中X.Y代表你的Python版本号,例如3.8)。

  • 内置的库目录(标准库的安装路径):Python也会在其内置的库目录下查找模块,例如lib/pythonX.Y/lib-dynload。

  • 当前环境下的主模块(__main__)的目录:当你在交互模式下或者直接运行一个脚本时,Python会在当前的工作目录下查找模块。

  • PYTHONHOME环境变量(操作系统环境变量PYTHONPATH所包含的路径):这是另一个在启动Python时设置的环境变量,可以用来修改模块搜索路径。PYTHONHOME环境变量指向Python的安装目录。

Python会按照以上顺序依次搜索这些路径,直到找到所需的模块为止。如果在多个路径中都找到了相同的模块,那么Python将使用最先找到的那个。如果需要更改模块搜索路径,可以使用sys.path.append()或者PYTHONPATH环境变量来进行修改。

如果你有自定义的模块,或者下载的模块,可以根据情况放在相应的路径,以便Python可以找到。

总结

最后,总结下,模块是Python编程中非常重要的概念,它提供了代码的组织和封装,实现了代码的复用和功能的扩展。通过合理使用模块,可以提高代码的可读性、可维护性和开发效率。在实际开发中,可以根据需求选择合适的模块,并灵活运用模块的导入和使用方式。

在引入模块示例的代码中,我们看到了函数和对象。从本质上来说,它们都是为了更好的组织已经有的程序,以方便重复利用,模块(module)也是为了同样的目的。

Python专栏
https://blog.csdn.net/zhouruifu2015/category_5742543

欢迎关注公众号CTO Plus,有问题欢迎后台留言交流。

更多精彩,关注我公号,一起学习、成长

公众号:CTO Plus

一个有深度和广度的技术圈,技术总结、分享与交流,我们一起学习。 涉及网络安全、C/C++、Python、Go、大前端、云原生、SRE、SDL、DevSecOps、数据库、中间件、FPGA、架构设计等大厂技术。 每天早上8点10分准时发文。

306篇原创内容

标准库系列-推荐阅读:

推荐阅读:

原文:Python3进阶之开发必备的知识点-模块(包)的作用和使用详解

最后,不少粉丝后台留言问加技术交流群,之前也一直没弄,所以为满足粉丝需求,现建立了一个关于Python相关的技术交流群,加群验证方式必须为本公众号的粉丝,改天我把所有代码示例的代码放到群里,群号如下:

图片

  • 7
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SteveRocket

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值