欢迎关注博主 python老鸟 或 前往 『Python自学网』, 从基础入门免费课程开始,逐步深入学习python全栈体系课程,适合新手入门到精通全栈开发。
免费专栏传送门:《Python基础教程》
模块是python程序架构的一个核心概念。
在导入模块时,每个导入的模块应该独占一行(推荐使用)
- import 模块名1
- import 模块名2
以下这种(不推荐使用)
import 模块名1, 模块名2
通过 模块名. 的方式使用模块提供的工具 ——全局变量、函数、类
首先先准备两个模块,md_01_测试模块1和 md_02_测试模块2,然后在demo文件中导入模块并使用工具。
测试模块文件代码内容如下截图:
在demo文件中使用模块中的函数和类——代码如下:
- # 导入两个模块
- import md_01_测试模块1
- import md_02_测试模块2
-
-
- # 使用模块中类创建对象
- a = md_01_测试模块1.A()
- print(a)
-
- b = md_02_测试模块2.B()
- print(b)
-
-
- # 调用模块方法
- md_01_测试模块1.name()
- md_02_测试模块2.name()
执行结果:
如果模块的名字太长,可以使用as指定模块的别名(也就是好记的名字),以方便后续在代码中的使用。
使用 as 指定模块的别名
import 模块名1 as 模块别名
注意:模块别名应该符合大驼峰命名法
改造上面代码:
- # 导入两个模块
- import md_01_测试模块1 as ModulOne
- import md_02_测试模块2 as ModulTwo
-
-
- # 使用模块中类创建对象
- a = ModulOne.A()
- print(a)
-
- b = ModulTwo.B()
- print(b)
-
-
- # 调用模块方法
- ModulOne.name()
- ModulTwo.name()
执行结果:
- import 模块名 是一次性把模块中所有工具全部导入,并且通过模块名./别名.访问
- 如果希望从某一个模块中导入部分工具,就可以使用from...import的方式
- # 从模块导入某一个工具
- from 模块名1 import 工具名
不需要通过 模块名. 就可以直接使用模块提供的工具——全局变量、函数、类
代码示例:
- # 导入模块中的部分工具
- from md_01_测试模块1 import A
- from md_01_测试模块1 import name
-
- # 直接调用函数、创建对象
- name()
-
- a = A()
- print(a)
执行结果:
注意:
如果两个模块中存在同名的函数,那么后导入模块的函数会覆盖掉先导入的函数
代码验证:模块1在前模块2在后
- from md_01_测试模块1 import name
- from md_02_测试模块2 import name
-
- # 直接调用函数
- name()
结果为: 我是 模块2
代码验证::模块2在前模块1在后
- # 分别导入模块中的函数
-
- from md_02_测试模块2 import name
- from md_01_测试模块1 import name
-
- # 直接调用函数
- name()
结果为:我是 模块1
开发习惯:开发时import代码应该统一写在代码的顶部,更容易既是发现冲突,一旦发现冲突,可以使用as关键字给其中一个工具起一个别名。
代码验证:给其中一个函数起别名调用两个函数
- # 分别导入模块中的函数
- from md_02_测试模块2 import name as ModuleTwo_name
- from md_01_测试模块1 import name
-
-
- # 直接调用2ge 函数
- name()
- ModuleTwo_name()
执行结果:
我是 模块1
我是 模块2
导入所有工具语法格式:
- # 从模块导入所有工具
- from 模块名1 import *
注意:这种方式不推荐使用,因为函数重名并没有任何的提示,一旦出现问题不好排查
使用工具方式:直接使用,不用 模块名. 的方式
代码验证:导入一个模块所有工具
- from md_01_测试模块1 import *
-
- print(title)
- name()
-
- a = A()
- print(a)
执行结果:
验证:全局变量和函数同名都被后面的覆盖了,单单从代码上不好排查,如图