模块化程序设计是指在进行程序设计时将一个大程序按照功能划分为若干小程序模块,每个小程序模块完成一个确定的功能,并在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计方法。
一、为什么
1.方便其它程序和脚本的导入使用。
2.避免函数名和变量名冲突。
3.提高代码的可维护性。
4.提高代码的可重用性。
二、自定义模块与导入
1.自定义模块
新建一个.py文件,名称尽量不要与Python自带标准模块名称相同。
2.Python自带模块的导入
1.import 模块名称 [as 别名] 【注】[ ]中的内容可以省略。
2.from 模块名称 import 函数/变量/类
cala.py 文件代码
def add(a,b):
return a+b
def num(a,b):
return a-b
new_cala.py文件代码
import math
print(math.pi)
print(math.pow(2,3))
print('--------------------------------------')
from math import pi
print(math.pi)
#print(math.pow(2.3))因为math模块我们只导入了pi函数;所以无法使用math模块中的其他函数
print(pow(2,3))#这个不属于math模块中的函数
print('---------自定义函数导入-------')
import cala #导入自定义模块
print(cala.add(2,8))
print(cala.num(10,6))
3.141592653589793
8.0
--------------------------------------
3.141592653589793
8
---------自定义函数导入-------
10
4
【注】from math import pi #只导入math模块中的pi 函数,math模块中的其他函数无法调用。
三、以主程序形式运行
if _name_ = '_main_':
pass
cala2.py文件代码
def add(a,b):
return a+b
if __name__ == '__main__':
print(add(10, 50)) #设置这个以主程序运行;
new_cala2.py文件代码
import cala2
print(cala2.add(5,90))
结果一:
60
95
结果二:
95
【注】结果二是在cala2.py文件中的 print(add(10, 50))加入了if _name_ = '_main_':模块以主程序形式运行。
四、导入包
1.包是一个层次的目录结构,它将一组功能相近的模块组织在一个目录下。
2.作用:代码规范化;避免模块名称冲突。
3.导入:import 包名.模块名
4.包与目录的区别:
1.包含__init__.py文件的目录名称的包。
2.目录里面通常不包含__init__.py文件
module1_a.py文件
a = 800
module2_b.py文件
b = 900
main.py文件
import pagepage1
import cala2
#import 只能导入包或模块名
from pagepage1 import module1_a
from pagepage1.module_b import b
print(b)
#from.....import可以导入包、模块、函数、变量
60 #衔接cala2.py
500
【注意事项】
1.import :只能导入包、模块名;例:import pageage1pa 或import cala2
2.from ........ import : 可以导入包、模块、函数、变量;
例:from pageage1 import module_a 或 from pageage1.module_b import b (b:变量)
五、常用内容模块
sys | 与Python解释器及其环境操作相关的标志库 |
time | 提供与时间相关各种函数库 |
os | 访问操作系统服务功能的标准库 |
calendar | 与日期相关各种标准库 |
urllib | 用与读取来自网上(服务器)的标准库 |
json | 使用josn序列化和反序列化对象 |
re | 在字符串中执行正则表达式匹配和替换 |
math | 提供标准算术运算的标准库 |
decimal | 进行精确控制运算精度,有效数位四舍五入操作的十进制运算 |
logging | 灵活记录事件、错误、警告和调试信息等日志信息功能 |
import sys
print(sys.getsizeof(85))#占用内存大小
print(sys.getsizeof(100))
import time
print(time.time())
print(time.localtime(time.time()))
28
28
1668437866.0739892
六、第三方模块安装
pip install 模块名 (在线安装)
使用:import 模块名
import urllib.request
print(urllib.request.urlopen('http://www.baidu.com').read())#读取百度返回信息;太多了可以下去试一下
漫步前行也是进步!我们可以一起努力。
^0^