python--模块与包
2021/8/8 9:06:18
本文主要是介绍python--模块与包,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
模块的导入
import 模块名 调用: 模块名.功能名 from 模块名 import 功能名 调用: 功能名 from 模块名 import * import 模块名 as 别名 from 模块名 import 功能名 as 别名
# Python中的模块就是可以将别人写好的,或者自己以前写好的功能直接导入新的文件或工程内,导入后可以直接调用 例如 : random time os # 我们没有实现模块中的功能,但是我们讲模块导入后就可以使用该功能,类似于继承 # 导入模块的方式 ''' import 模块名 调用: 模块名.功能名 from 模块名 import 功能名 调用: 功能名 from 模块名 import * import 模块名 as 别名 from 模块名 import 功能名 as 别名 ''' # # 导入os模块 # import os # # # 使用os模块 # print(os.listdir()) # # 导入os模块中部分功能 # from os import listdir, mkdir # # 使用os模块中的功能 # print(listdir()) # # 导入os模块中的所有功能 # from os import * # # *就是通配符,表示导入os模块中所有允许导入的模块 # # # 使用os模块 # print(listdir()) # # 导入os模块,将模块改名为xitong # import os as xitong # # 使用os模块 # # NameError: name 'os' is not defined # # print(os.listdir()) # # 如果给模块起了别名.则原名称不可使用 # print(xitong.listdir()) # from os import listdir as ls # print(ls()) # NameError: name 'listdir' is not defined # 给功能名称起别名后,无法使用原名称只能使用新的功能名称 # print(listdir())
自定义模块
-
模块名一定要遵循标识符的命名规则才能被导入
-
模块中书写的全局变量,函数,类可以盗取其他文件
-
导入模块时,会将模块中的所有文件执行一遍
-
为了保证测试代码在导入模块时不被执行,我们的测试代码需要写入
if __name__ == '__main__:'
# 标识符的命名规则 # 1/以字母数字下划线组成 # 2/不能以数字开头 # 3/不能是关键字 # 4/严格区分大小写 age = 18 def func(): print('我是module中的函数') class Person(object): def eat(self): print('西瓜真好吃呀') # 在书写模块或者工具类的时候,经常需要调试,每次调试完成后还要将代码删除,否则导包结束后测试代码都会被执行一遍 # 所以我们需要想一个办法,将我们写的测试代码在当前模块中执行时,调用,在导入模块时不调用 # __name__就是说明当前文件执行的模块名是什么? # print(__name__) # __main__如果在当前文件中执行,模块名就是main # 如果导入其他模块,则__name__的值就是文件名称module_01 # 所以我们根据__name__的值的判断,就可以断定他是咋当前文件执行,还是导入模块 # 使用该判断,让我们的测试代码只有在当前文件中执行的时候才会被调用 if __name__ == '__main__': if age > 10: print('今晚不能尿床了')
模块查询顺序
-
sys.path可以查询模块调用路径列表,越靠前的路径越优先查询
# 可以使用sys.path查看模块的定位顺序,如果模块名相同,优先从最新的序列查找 import sys print(sys.path) # sys.path的返回值是一个路径列表,排名越靠前的路径,在调用模块时优先查找,如果这个路径下没有对应模块才去下一个路径中查找. # 在开发中可以在列表中你添加路径(了解)
-
开发中可以添加调用路径 sys.path.append(路径)
__all__
的使用方式
# __all__可以控制模块使用功能from 模块名 import *所导入的功能列表 from module_02 import * # NameError: name 'age' is not defined # 如果__all__控制的类表中没有改功能则不能在文件中使用 # print(age) # 如果写到__all__中则可以使用 func() import module_02 # __all__不能控制import的导入效果 print(module_02.age) from module_02 import age # 如果针对性导入某个功能,不受__all__影响 print(age)
包的的导入
-
导入包
-
import 包名.模块名
-
from 包名 import 模块名
-
如果想要使用功能from 包名 import *
-
要在
__init__.py
文件中书写__all__
添加指定模块名才能导入
-
-
# 包:多个有关联的模块在一起,保存在同一个文件夹内,并且文件内有一个__init__.py为文件,这种文件夹就叫做包 # 创建包的方式: mew >>> package 这中创建方式会自动添加一个__init__.py文件 # # 导入包 : import 报名.模块名 # import my_package.module_02 # # 调用 : 包名.模块名.功能名称 # my_package.module_02.func() # 导入包: from 包名 import 模块名 # from my_package import module_01 # # 调用: 模块名.功能名称 # print(module_01.age) # 导入包: from 包名 import * from my_package import * # 必须在__init__.py文件中的__all__里添加模块列表,才能使用import* 进行导入 print(module_01.age) module_02.func()
这篇关于python--模块与包的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南
- 2024-11-16`PyMuPDF4LLM`:提取PDF数据的神器