模块和包

一模块

一个模块就是包含了python定义和声明的文件,建立一个py文件,给它起一个符合变量名规则的名字,这个名字就是模块名.python

模块的使用

import my_module

import 模块的命名空间和当前文件不在同一命名空间中,且模块不能够重复导入,这是由于,模块的导入过程当中会先判断这个模块是否导入过,是则引用,不然建立一个属于这个模块的命名空间,让模块名指向这个命名空间,而后才执行模块中的代码.当导入多个模块时,要一个一个的导入,且按照自定义模块,第三方模块,内置模块的顺序导入.app

导入的模块中的变量名会被当前文件中的一样变量名覆盖测试

import my_module  #import导入模块

import sys
print(sys.modules)   #判断模块是否已经导入

from ...  import ...

导入模块中本身想使用的变量名,且没有没被import的名字不可用spa

from my_module import func #导入my_module模块中的func

from my_module import func1,func2 #导入多个名字

from my_module import func as f #为导入的名字起别名,支持多个,且起别名后,import后的名字将不可用

from my_module import * #等同于import my_module,_开头的名字除外 ,__all__=['money','read1']  能够约束*中变量内容

 

 模块的加载与修改

模块运行后,再修改模块中的内容不会将修改后的内容显示到当前运行结果中code

import importlib
importlib.reload(my_module)   #用importlib模块后能够实现实时修改

 

但这种状况只能用在测试环境中blog

把模块当脚本使用

直接运行py文件那么这个py文件就是以脚本运行的,此时能独立提供一个功能,且__name__ = "__main__" it

如果先导入这个文件,就是一个模块,此时是一个可以被调用的功能,不能自主完成交互,且__name__ = "模块的名字"class

添加模块路径

import sys
path = r'D:\路径'
sys.path.append(path)

 

文件夹中含有__init__.py文件则称为包,导入包的实质就是导入__init__.py文件.包是模块的一种形式,包是为用来导入的import

注意导入的文件中带有.就是导入包的标志变量

绝对导入

在执行一个py脚本的时候,这个脚本以及和这个脚本同级的模块中只能用绝对导入
缺点:
全部的导入都要从一个根目录下日后解释文件夹之间的关系
若是当前导入包的文件和被导入的包的位置关系发生了变化,那么全部的init文件都要作相应的调整

 

相对导入

不须要去反复的修改路径只要一个包中的全部文件夹和文件的相对位置不发生改变也不须要去关心当前这个包和被执行的文件之间的层级关系
缺点:
含有相对导入的py文件不能被直接执行
必须放在包中被导入的调用才能正常的使用
相关文章
相关标签/搜索