2022.08.20 DAY36
模块
-
只要是以.py为后缀的文件,都可以称为模块。
-
模块中包含:
- 变量
- 函数
- class 面向对象(类->对象)
- 可执行代码
-
模块的好处就是管理方便。
模块的使用
- 如何使用模块?
- 自定义模块
- 导入模块:
- import 模块名1, 模块2…
- 导入之后如何使用?
- 模块名.类
- 模块名.变量
- 模块名.函数名(参数)
- 导入模块中相关的数据
- from 模块 import 变量,函数,类
- 导入之后如何使用?
- 可以直接使用
自定义模块的定义及使用
-
问题:在导入模块的时候,模块中的代码会被执行一遍。
-
解决方案:在自定义模块中,新增控制代码。
if __name__ == '__main__': 模块执行代码
测试模块MyMath:
"""
自定义一个模块
实现数学的四则运算
两个数的加减乘除运算
"""
def add(a, b):
"""
加法运算
:param a:
:param b:
:return: 两个数的和
"""
return a + b
def sub(a, b):
"""
减法运算
:param a:
:param b:
:return: 两个数的差
"""
return a - b
def mul(a, b):
"""
乘法运算
:param a:
:param b:
:return: 两个数的积
"""
return a * b
def div(a, b):
"""
除法运算
:param a:
:param b:
:return: 两个数的商
"""
if b != 0:
return a / b
else:
print("除数无意义...")
return 0
if __name__ == '__main__':
a = 10
b = 2
print("a,b的和为:%g"%add(a, b))
print("a,b的差为:%g"%sub(a, b))
print("a,b的积为:%g"%mul(a, b))
print("a,b的商为:%g"%div(a, b))
测试代码:
# 1.导入模块的方式
# import random
# result = random.randint(1, 100)
# print(result)
# import MyMath
# if __name__ == '__main__':
# a = 10
# b = 2
# print("a,b的和为:%g"%MyMath.add(a, b))
# print("a,b的差为:%g"%MyMath.sub(a, b))
# print("a,b的积为:%g"%MyMath.mul(a, b))
# print("a,b的商为:%g"%MyMath.div(a, b))
# 2.导入模块中相关数据的方式
# from random import randint
# result = randint(1, 100) # 直接使用
# print(result)
from MyMath import add, sub, mul, div
if __name__ == '__main__':
a = 10
b = 2
print("a,b的和为:%g"%add(a, b))
print("a,b的差为:%g"%sub(a, b))
print("a,b的积为:%g"%mul(a, b))
print("a,b的商为:%g"%div(a, b))
模块知识__all__的使用
- from 模块 import 变量,函数,类
- 问题:使用这种方法导入模块的所有功能,一个一个填写,比较麻烦。
- 解决方案:
- from 模块 import *
- 默认导入模块中所有的功能
- 如果在模块中手动添加全局变量__all__ = []