代码越来越多的时候,我们将代码写到一个.py 文件里,随着代码的增加,代码的维护越来越困难。如果将代码按照不同的功能拆分放到不同的.py文件中,每个.py文件就是一个模块。
不同模块中的变量名可以相同,他们不会受影响。
在创建许许多多模块后,我们可能希望将某些功能相近的文件组织在同一文件夹下,这里就需要运用包的概念了。
包是带有__init__.py文件的文件夹。包必须有__init__.py文件,不然他就是个文件夹。
包是用来区分不同类型的模块,不同包中的模块名可以相同,他们不会相互受影响。当然包下可以还有包(子包),如同子文件夹。
# giftest.py 代码,添加到giftest.py 文件中gif = '1.gif'def add(a, b): print('add', a + b)class giftest(object): def minus(self, a, b): print('giftest.minus', a - b)
一、import... as...
import 引入模块格式如下:
import 模块路径.文件名 as 别名
释:当文件在当前目录下或PATH环境变量下,可以直接import 文件名;否则要从项目根目录下开始指定路径。别名,直接引入文件名可以不用别名,如果带模块路径引入最好加上别名,使用时直接 【别名. 】使用。
示例:
# woodtest.py 下引入manthimport math # 引入math模块,系统自带模块都在PATH下import com.gif.gifecho as gif # 引入gifecho 模块print(math.pi) # 调用math模块中的pi常量print(gif.__file__) # 通过别名使用com.gif.gifecho模块
如果要同时导入多个模块,只需要在模块名之前用逗号进行分隔:
import module1,module2,module3.......
在用import语句导入模块时最好按照以下的顺序:
1、python 标准库模块
2、python 第三方模块
3、自定义模块
二、from ... import ...
from ... import ... 这种引入方式使用一个点号来标识引入类库的精确位置。
格式:
import 模块路径.文件名 import 变量名\函数\类名
注意:win系统不要使用相对路径。
示例:
# gifecho.py 下引入giftest 文件from com.gif.giftest import * # 引入giftest.py 下的全部from com.gif.giftest import add # 只引入add函数from com.gif.giftest import giftest # 只引入giftest类print(gif) # giftest.py 模块下的gif变量add(1, 2) # 使用giftest.py 模块下add函数giftest = giftest() # 实例化giftest.py 模块的giftest类giftest.minus(2, 1) # 调用了giftest类的方法