模块:
模块就是一个python文件。
模块就是一个python文件。
功能:
1.可以提高文件的重复利用率。提高开发效率
2.用于划分程序结构。
自定义模块:
模块就是一个python文件而已,所有python代码都可以放入模块,实际开发中,模块放入的内容都是
重复利用率高的内容主要包含:
1.为当前模块专门定义的变量【其他语言一般都是常量】
2.函数。
3.类
4.测试代码
注意:模块的命名不要和内置模块重名!
测试代码统一放到判断当中
if __name__ == '__main__':
只在当前文件测试代码,当前文件的属性,功能不能被其他文件调用
模块的导入:
1.import 模块名
直接导入整个模块
2.import 模块名 as 别名
使用别名导入模块,适用于模块名称较长的模块
3.from 模块名 import 某个内容
导入模块中的指定内容。
注意:该方式是将模块中的内容直接导入当前脚本当中,访问不需要模块名称
4.from 模块名 import 内容1,内容2,内容3....
导入模块中的指定的多个内容。
注意:该方式是将模块中的内容直接导入当前脚本当中,访问不需要模块名称
5.from 模块名 import *
导入模块中的所有内容
注意:该方式是将模块中的内容直接导入当前脚本当中,访问不需要模块名称
受保护的内容不能使用这种方式进行访问
警告:
使用from ... import 语法必须确定 模块中的内容不会和当前脚本中的内容重名。
模块的搜索路径:
import module1
name = “王大锤”
print(module1.name)
导入模块的时候程序查找指定模块的文件夹的路径的集合。
import sys
print(sys.path)
常用搜索路径(windows)
1.当前导入模块的文件所在的文件夹
仅仅是一个普通的程序文件,为当前文件夹下的文件使用的模块
2.(python安装目录中的Lib文件夹)C:\Users\xdl\AppData\Local\Programs\Python\Python37\Lib
表示为python扩展功能,适用于所有使用当前环境的程序
3.(真实和虚拟环境要区分好)第三方模块的目录\Lib\sitepackages(C:\Users\xdl\AppData\Local\Programs\Python\Python37\Lib\site-packages)
也是为python扩展功能,相当于用户为自己环境扩展的而不是为整个python扩展的
自己添加搜索路径:
import sys
sys.path.append(‘路径’)
包:
文件夹。所以包就是一个普通的文件夹在python中的称呼。
作用:
1.主要用于组织模块。
2.可以当作模块使用。
包的结构:
包(文件夹)
|----
init
.py 包的标志文件(可以有内容,也可以是空的!)
|---- 模块1(文件)
|---- 模块2(文件)
|---- …
|---- 子包(文件夹中的文件夹)
|----- |----
init
.py 包的标志文件(可以有内容,也可以是空的!)
|----- |---- 模块3
|----- |---- 模块4
|----- |---- …
包的导入方式:
import语法导入
1.import 包名
导入包本身,但是不一定能够导入内容.
-
import 包名.模块名
导入包中的指定模块。 -
import 包名.子包名
导入子包本身,但是不一定能够导入内容.
4.import 包名.子包名.模块
导入包中子包中的模块
以上四个语法均可以使用as语法设置别名
from import 语法导入
1.from 包 import 模块
从包中导入一个模块
2.from 包 import 模块1,模块2…
从包中导入者多个模块
3.from 包 import 子包
从包中导入子包,无法使用模块中的信息
4.from 包.子包 import 模块
导入包中子包中的模块
5.from 包名.子包.模块 import 内容
导入包中子包中模块的一个或者多个内容
all
特殊变量:(少用)
1.包是文件夹一般不能够存储信息。
2.
init
.py文件除了当做包的标志之外,还可以为包本身存储信息,使得包具有模块的内容
3.在__init__.py文件中,如果设置了__all__变量,并且使用from 包 import * 语法导入包本身
init
.py中除了__all__的设置之外,其余设置均会失效
4.__all__变量的作用在使用from 包 import *的导入方式之下,可以设定当前包导入时所使用的模块
all
= [‘模块名’,‘模块名’,‘模块名’,…]
相对导入与绝对导入方式:
绝对导入:
import 包
import 模块
import 包.子模块
from 包 import 模块
from 模块 import 内容
查找方式:绝对导入方式会使用【搜索路径】查找指定的包或者模块的所在
相对导入:
import 语法无法使用 !
from .包名/模块名 import 内容
from …包名/模块名 import 内容
查找方式:在当前文件夹中搜索查找指定的包或者模块
# 相对路径导入时,不可以直接运行当前文件,因为python会把当前文件作为最顶层文件直接运行,如果要使用的话,就要在别的文件里使用绝对路径方式导入此文件,才可以运行。
# 单入口设计模式就是由此而来。
# 单入口设计模式的优点:安全,隐私性较高。缺点:代码调试不好做。
注意:from后面可以使用. import 后面允许使用,
例子:
from . import pkg 相对于当前路径引入模块
from .模块名 import 属性名 相对于当前模块引入具体属性
from … import 模块名 相对于上一级引入模块
from …包名 import 模块名 相对于上一级的某个包引入模块
from …包名.模块名 import 属性名 相对于上一级某个包下的某个模块引入某属性
. 当前路径
… 上一级路径
… 上一级的上一级
… 上一级的上一级的上一级
… (这里的点是无限的)