1.模块
●每一个以扩展名py结尾的Python 源代码文件都是一个模块
●模块名同样也是一个标识符,需要符合标识符的命名规则
●在模块中定义的全局变量、函数、类都是提供给外界直接使用的工具
●模块就好比是工具包,要想使用这个工具包中的工具,就需要先导入这个模块
1.2导入模块的两种方式
1)import导入
import 模块名1
import 模块名2
模块名1.函数()
模块名2.变量
......
·
如果嫌模块名过长,可以适用
as
指定模块名称,以方便在代码中使用
import 模块名 as 模块别名(应该符合大驼峰命名法)
模块别名.函数()
......
·
2)from…import导入
●如果希望从某个模块中,导入部分工具,就可以使用from...import
的方式
●import模块名
是一次性把模块中所有工具全部导入,并且通过模块名/别名访问
实现方法:
# 从模块中导入一个工具
from 模块名1 import 工具名
··导入之后
·调用不需要通过 模块名.
·可以直接使用模块提供的工具 —— 全局变量,函数,类
注:如果两个模块,存在同名的函数,那么后导入模块的函数,会覆盖掉先导入的函数
一旦发现冲突后,可以通过
as
关键字给其中一个工具起个别名
例:
·
3)从一个模块中导入所有工具且不需要使用 模块名.
来调用工具,可以直接通过工具名调用
from 模块名 import *
注:通过这种方式导入不同模块,一旦不同模块中出现同名工具,则会调用后导入的模块工具,在大的程序中排查问题会非常麻烦
·
1.3模块的搜索顺序
Python的解释器在导入模块时,会:
1.搜索当前目录指定模块名的文件,如果有就直接导入
2.如果没有,再搜索系统目录
注: 在开发时, 给文件起名,不要和系统的模块文件重名
Python中每一个模块都有一个内置属性__file__
可以查看模块的完整路径
例:
·
1.4关于导入模块时遇到的问题
··每一个独立的python文件都是一个模块
··在导入模块时,文件中 所有没有任何缩进的代码 都会被执行一遍
例:
解决方法:__name__
内置属性
为了解决在导入模块时会自动运行该模块的测试代码(如上),使用内置属性__name__
将测试代码只在测试情况下会被调用,被导入时不会被调用。
·
●__name__
是Python 的一个内置属性,记录着一个字符串
●如果是被其他文件导入的,__name__
就是 模块名
●如果是当前执行的程序__name__
是__main__
例1:
例2:
标准写法:
·
2.包(Package)
●包是一个包含多个模块的特殊目录(Python Package)
●目录下有一个特殊的文件 __init__.py
●包名的命名方式和变量名一致,小写字母+ _
好处
●使用import 包名
可以一次性导入包中所有的模块
·
init.py
··当在外界时,想调用包里的模块,导入后无法直接调用
··必须要先在包中__init__.py文件里,手动添加希望被外界要调用的包里的模块
实现方法:
__init__.py 中添加
form . import 模块名1
from . import 模块名2
......