Python基础07-模块
零、文章目录
Python基础07-模块
1、模块是什么
- Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。模块能定义函数,类和变量,模块里也能包含可执行的代码。
2、模块的分类
- 在Python中,模块通常可以分为两大类:内置模块(目前使用的) 和 自定义模块
3、模块的导入方式
(1)import模块名
基本语法:
import 模块名称
或
import 模块名称1, 模块名称2, ...
使用模块中封装好的方法:
模块名称.方法()
案例:使用import导入math模块
import math
# 求数字9的平方根 = 3
print(math.sqrt(9))
(2)import 模块名 as 别名
- 在有些情况下,如导入的模块名称过长,建议使用as关键字对其重命名操作,以后在调用这个模块时,我们就可以使用别名进行操作。
import time as t
# 调用方式
t.sleep(10)
(3)from 模块名 import *
-
提问:已经有了import导入模块,为什么还需要使用from 模块名 import 功能名这样的导入方式?
-
答:import代表导入某个或多个模块中的所有功能,但是有些情况下,我们只希望使用这个模块下的某些方法,而不需要全部导入。这个时候就建议采用from 模块名 import 功能名
-
from 模块名 import * 导入这个导入方式代表导入这个模块的所有功能(等价于import 模块名)
(4)from 模块名 import 功能名(推荐)
'''
导入方式:
from 模块名称 import * 代表导入这个模块中所有函数
from 模块名称 import 函数1, 函数2, 函数3 代表仅导入函数123
调用方式:不需要模块名称,直接使用函数名称即可
'''
# from math import *
# 或
from math import sqrt, floor
# 调用方式
print(sqrt(9))
print(floor(10.88))
(5)time模块中的time()方法
'''
time模块是一个与日期时间相关的模块,主要拥有这样两个方法
time.sleep(秒数) :休眠
time.time() :获取当前时间,返回的是一个数字,我们经常使用time.time()获取程序执行时间
'''
# 1、导入time模块
import time
# 2、程序开始前,获取一个时间点
start = time.time()
# 定义一个列表
list1 = []
for i in range(10000000):
list1.append(i)
# 3、当程序执行结束,获取一个时间点
end = time.time()
print(f'以上程序执行一共消耗了{end - start}s时间!')
4、自定义模块是什么
- 模块的本质:在Python中,模块的本质就是一个Python的独立文件(后缀名.py),里面可以包含全局变量、函数以及类。
- 注:在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。也就是说自定义模块名必须要符合标识符命名规则。
- 特别注意:我们在自定义模块时,模块名称不能为中文,不能以数字开头,另外我们自定义的模块名称不能和系统中自带的模块名称(如os、random)相冲突,否则系统模块的功能将无法使用。比如不能定义一个叫做os.py模块
5、自定义模块定义
- 案例:在Python项目中创建一个自定义文件,如my_module1.py
# 封装一个函数sum_num(),专门对两个参数进行求和操作
def sum_num(num1, num2):
print(num1 + num2)
6、导入自定义模块
'''
在Python代码中,只要涉及到模块的导入你都有两种导入方式:① import ② from
'''
# import my_module1
# 导入模块中已经封装好的sum_num()方法
# my_module1.sum_num(10, 20)
from my_module1 import sum_num
# 调用方法
sum_num(10, 20)
8、测试模块代码
-
在我们编写完自定义模块以后,最好在模块中对代码进行提前测试,以防止有任何异常。
-
引入一个魔术变量:
__name__
,其保存的内容就是一个字符串。随着运行页面的不同,其返回结果也是不同的:- ① 如果
__name__
是在当前页面运行时,其返回结果为__main__
- ② 如果
__name__
在第三方页面导入运行时,其返回结果为模块名称(文件名称)
- ① 如果
-
基于以上特性,我们可以把
__name__
编写在自定义模块中,其语法如下:if __name__ == '__main__': # 执行测试代码
-
定义一个自定义模块my_module2.py
'''
在Python中,以__name__这样命名的变量都属于魔术变量,拥有特殊的含义!
__name__ :是一个特殊的变量,随着运行环境的不同(随着所运行位置的不同,返回结果也是不同的)
__name__返回的结果是一个字符串
① 如果在本页面直接输出__name__,其结果为'__main__'
② 如果在本页面中,存在一个__name__,然后把这个页面导入到其他文件时,则__name__返回结果就是本页面的文件名称,不等于__main__
'''
print(__name__)
# print(type(__name__))
#
if __name__ == '__main__':
print('如果以上条件成立,代表我们正在当前页面中执行此代码')
- 在自定义模块中直接运行,输出
如果以上条件成立,代表我们正在当前页面中执行此代码
- 在外部引入此模块运行,输出
my_module2