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……