Python学习笔记(二十)—模块的导入
一、模块介绍
Python 提供了强大的模块支持,主要体现在Python 标准库中包含了大量的模块(称为标准模块),还有大量的第三方模块,开发者自己也可以开发自定义模块。通过这些强大的模块可以极大地提高开发者的开发效率。
那么,模块到底指的是什么呢?模块,英文为 Modules,用一句话总结:模块就是 Python 程序。换句话说,任何 Python 程序都可以作为模块。
模块可以比作一盒积木,通过它可以拼出多种主题的玩具,这与前面介绍的函数不同,一个函数仅相当于一块积木,而一个模块(.py 文件)中可以包含多个函数,也就是很多积木。所以模块和函数的关系如图 1 所示。
使用模块的好处:体现在提高代码的可重用性,当编写好一个模块后,只要编程过程中需要用到该模块中的某个功能(由变量、函数、类实现),无需做重复性的编写工作,直接在程序中导入该模块即可使用该功能。模块,可以理解为是对代码更高级的封装,即把能够实现某一特定功能的代码编写在同一个 .py 文件中,并将其作为一个独立的模块,这样既可以方便其它程序或脚本导入并使用,同时还能有效避免函数名和变量名发生冲突。
二、导入模块的实质
导入模块的语法格式:
1、import 模块名1 [as 别名1], 模块名2 [as 别名2],…
:使用这种语法格式的 import 语句,会导入指定模块中的所有成员(包括变量、函数、类等)。不仅如此,当需要使用模块中的成员时,需用该模块名(或别名)作为前缀,否则 Python 解释器会报错。
2、from 模块名 import 成员名1 [as 别名1],成员名2 [as 别名2],…
: 使用这种语法格式的 import 语句,只会导入模块中指定的成员,而不是全部成员。同时,当程序中使用该成员时,无需附加任何前缀,直接使用成员名(或别名)即可。
导入模块的实质:就是把导入的Python文件从头到尾执行一次。
举个例子:在同一目录下创建Model1.py和model2.py两个文件,内容如下:
model.py:
name = 'model1' def f1(): print('我是model1文件里面的f1') print('我是model1文件里面的print') #创建一个文件,并写入内容 f = open('test.txt','w') f.write('我是model1模块文件里面写入的内容') f.close() print('脚本执行完毕!')
model2.py
import model1 as m1 m1.f1() #调用model.py文件中的f1方法 print(m1.name) #调用model.py文件中的name变量 执行结果: 我是model1文件里面的print 脚本执行完毕! 我是model1文件里面的f1 model1
注意:模块命名时尽量不要使用系统已经定义的函数名称。否则在导入模块的时候系统会报错。比如在当前目录下创建random.py文件,然后在model2.py中import random模块并应用,这个时候会报如下错误:
import random print(random.randint(1,9)) 运行结果:
AttributeError: module 'random' has no attribute 'randint'
运行出现了错误。原因是在于Python在导入模块后,使用时寻找模块的顺序出现问题导致。那么究竟是怎么回事呢?下面就来说说导入模块后寻找模块的顺序
三、导入模块后寻找的顺序
1、先从当前目录下寻找是否有这个模块。
2、如果当前路径下没有,则去环境变量中查找这个模块。(这里的环境变量不是系统的环境变量,而是Python自己的环境变量)
到此可能有人会提出疑问,在同一路径下不是有random模块吗?为什么还会报错呢?这是因为在本目录下虽然定义了random模块,但是在掉用模块中的方法的时候去当前目录查找,没有randinit方法,所以就出现了如上错误。
四、环境变量的查看及添加
1、查看Python自己的环境变量,首先需要导入sys模块;具体如下:
import sys print(sys.path) #打印python的环境变量目录
这样就能看到Python的环境变量值。
2、将模块加入到环境变量中
2.1 方法一:将需要导入的模块收到加入到环境变量中。
1、首先通过sys.path查找Python的环境变量值
2、然后将*.py模块放入对应Python环境变量,路径中的任何一个路劲下放即可
2.2 方法二:将导入模块路径,临时加入到Python编辑中
1、导入sys模块
2、执行sys.path.append(r'c:\xxx\xxx') #将路径加入到Python环境变量中去
注意:临时生效,将路径加入都Python环境变量的末尾,一旦重新打开工具或者Python端即失效
import sys print(sys.path) #打印python的环境变量目录 sys.path.append(r'G:\xxx\Project\text') #临时生效,将路径加入都Python环境变量的末尾 print(sys.path) #打印python的环境变量目录
2.3 方法三:将导入模块路径,永久加入环境变量
1、导入sys模块
2、执行sys.path.insert(0,r'c:\xxx\xxx') #将变量加入环境变量;里面第一个参数是加入到环境变量中的那个位置(下标值),第二个参数是要加入的模块路径
import sys print(sys.path) #打印python的环境变量目录 sys.path.insert(0,r'G:\code\Project\text') #将变量加入环境变量的开头,避免查询所有 的环境变量
2.4 方法四:使用pycharm工具来加环境变量
1、选择要加入模块的文件,右击>选择Mark Direc as>Sources Root 即可将文件加入Python的环境变量中
2、 如果取消的话,同样选择文件右击>选择Mark Direc as>unmark as Sources root
注意:如果A模块和B模块在同一目录下,那么A模块导入B模块直接:import B即可。如果A模块和B模块在不同路径下放,那么在导入的时候需要先将B模块加入到Python的环境变量中去,这样导入才不会出错。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器