模块的引入方式:
1.import 模块名:导入模块中的所有内容(引入多个用逗号分隔)
import random,time
2.from 模块名 import 函数名1,函数名2...
导入部分模块
(导入部分的话直接使用)
3.from 模块名 import *
导入所有,有约束
需要在__init__.py文件中添加属性:
__all__ =[ "函数1","函数2"...... ]
引入自定义模块
**第一种**,直接 import
这里有个大前提,就是你的py执行文件和模块同属于同个目录(父级目录)
**第二种**,通过sys模块导入自定义模块的path
如果执行文件和模块不在同一目录,这时候直接import是找不到自定义模块的
sys模块是python内置的,因此我们导入自定义模块的步骤如下:
先导入sys模块
然后通过sys.path.append(path) 函数来导入自定义模块所在的目录
导入自定义模块。
注意:相同级别的导入,如果用sys拼接路径的话,只需要到目录,而不是py文件,然后直接import导入即可!!
**第三种**:
venv文件下--》lib--》site-packages--》新建文件夹--》存入模块
导入方式:
import 文件夹.模块
文件夹.模块.属性(方法)
**第四种**
动态导入:
import sys
sys.path.insert(0,r"C:UsersAdministratorDesktop")
print(sys.path)
__import__("hi.py")#导入的是包名,然后再通过from 包名 import 模块名
包
通常包总是一个目录,可以使用import导入包,或者from + import来导入包中的部分模块。
包目录下为首的一个文件便是 __init__.py。然后是一些模块文件和子目录,假如子目录中也有 __init__.py 那么它就是这个包的子包了。
在创建许许多多模块后,我们可能希望将某些功能相近的文件组织在同一文件夹下,这里就需要运用包的概念了。
包对应于文件夹,使用包的方式跟模块也类似,唯一需要注意的是,当文件夹当作包使用时,文件夹需要包含__init__.py文件,主要是为了避免将文件夹名当作普通的字符串。__init__.py的内容可以为空,一般用来进行包的某些初始化工作或者设置__all__值,__all__是在from package-name import *这语句使用的,全部导出定义过的模块。
**__init__.py的主要作用是:**
1. Python中package的标识,不能删除
2. 定义__all__用来模糊导入(from package-name import *)
3. 编写Python代码(不建议在__init__中写python模块,可以在包中在创建另外的模块来写,尽量保证__init__.py简单)
**特点:**
python包是:
包是一个有层次的文件目录结构,它定义了由n个模块或n个子包组成的python应用程序执行环境。
通俗一点:包是一个包含__init__.py 文件的目录,该目录下一定得有这个__init__.py文件和其它模块或子包。
包将有联系的模块组织在一起,即放到同一个文件夹下,并且在这个文件夹创建一个名字为__init__.py 文件,那么这个文件夹就称之为包有效避免模块名称冲突问题,让应用组织结构更加清晰
__init__.py 控制着包的导入行为
__init__.py为空仅仅是把这个包导入,不会导入包中的模块
__all__在__init__.py文件中,定义一个__all__变量,它控制着 from 包名 import *时导入的模块