python模块和包的作用是管理python项目的代码,避免命名冲突等问题。同时有利于项目开发,进行模块化编程。
模块实现之后,可以重复调用。我们只需要使用自己或者别人的模块,像搭积木一样搭建自己的程序。
目录
一,基础概念深入理解
1.1 什么是模块module?
1.2 什么是包?
1.3 包的嵌套(子包)
1.4 包中__init__.py的作用
二,import的用法
2.1 import 模块
2.2 import 包
2.3 import 包.子包
2.4 import 包.模块
三,from……import的用法
3.1 from 模块 import 模块中的类名,常量,函数
3.2 from 包 import 子包
3.3 from 子包 import 子子包
3.4 from 包.模块 import 函数,类名,常量
四,其他注意点
4.1 导入包实质上是执行__init__.py文件
4.2 使用sys.path查看解释器会去哪里找包
4.3 绝对导入和相对导入
4.4 导入模块时形成的链式导入
一,基础概念深入理解
1.1 什么是模块module?
一般常见的.py文件就是一个python模块。另外:.pxd,.pyi,.pxc,.so,.dll,.pyc等都是python的模块。
模块被import语句引入之后,比如import os,变量os就与os模块进行了绑定。一个module对象拥有__name__,__doc__等属性。通过 __doc__ 可以获得模块的文档字符串的内容;通过特殊变量 __name__ 可以获取模块的名称。在正常情况下,模块名字对应源文件名。 仅有一个例外,就是当一个模块被作为程序入口时(主程序、交互式提示符下),它的__name__ 的值为 __main__ 。
sys.modules是一个列表,里面记录了python解释器预加载的一些模块,比如os,os.path等。注意:os.path与os的区别就是在os模块的源码里面指定了一个os.path来指向一些处理路径的函数,于是我们可以把os.path当作模块使用。
1.2 什么是包?
把一些模块放进一个文件夹,并在这个文件夹中添加一个__init__.py文件,这个文件夹就成了一个python包。
1.3 包的嵌套(子包)
一个包中如果还有其他包,则称包中的包为子包。
1.4 包中__init__.py的作用
__init__.py 的三个核心作用:1 ,作为包的标识,不能删除。2 ,导入包实质是执行__init__.py 文件,可以在 __init__.py 文件中做这个包的初始化、以及需要统一执行代码、批量导入。
二,import的用法
2.1 import 模块
import os,os.path,time
2.2 import 包
import numpy
2.3 import 包.子包
import numpy.random
import numpy.random as npr
# 多级包这么写:a.bb.ccc.ddd……
2.4 import 包.模块
import numpy.f2py.auxfuncs
三,from……import的用法
3.1 from 模块 import 模块中的类名,常量,函数
from threading import Thread
from time import sleep
from math import pi
3.2 from 包 import 子包
from numpy import random
3.3 from 子包 import 子子包
from numpy.random import tests
from numpy import random.tests # 这种写法错误,原因就是tests属于random包,而且numpy包下也没有random.tests这个包
3.4 from 包.模块 import 函数,类名,常量
from numpy.random import randint,randn
四,其他注意点
4.1 导入包实质上是执行__init__.py文件
只有使用import package这种形式才会执行__init__.py。
4.2 使用sys.path查看解释器会去哪里找包
import sys
for i in sys.path:
print(i)
4.3 绝对导入和相对导入
绝对导入是指从sys.path中的文件夹开始寻找并导入。
相对导入指的是从当前.py文件所在目录开始向上一级或者下一级目录进行寻找并导入。
4.4 导入模块时形成的链式导入
举例:a.py。import math。
b.py。import a。
则:在b模块中print(a.pi)将打印出3.1415926……