1、什么叫模块
- Modules
- 一个模块中包含N多个函数
- 在Python中一个扩展名为.py的文件就是一个模块
- 使用模块的好处:
- 方便其他程序和脚本的导入并使用
- 避免函数名和变量名冲突
- 提高代码的可维护性
- 提高代码的可重用性
模块包含:
- 函数
- 类
- 语句
# Name: Python study
# Designer: MilesHugh
# Time: 2023/4/14 8:54
def fun():
pass
def fun2():
pass
class Student:
native_place = '湖南'
def eat(self, name, age):
self.name = name
self.age = age
@classmethod
def cm(cls):
pass
@staticmethod
def sm():
pass
a = 10
b = 20
print(a + b)
2、自定义模块
- 创建模块
- 新建一个.py文件,名称尽量不要与python自带的标准模块名称相同
- 导入模块
import 模块名称 [as 别名] from 模块名称 import 函数/变量/类
# Name: Python study # Designer: MilesHugh # Time: 2023/4/14 10:26 print('------import 模块名称 [as 别名]------') import math print(id(math)) print(type(math)) print(math) print(math.pi) print('------') print(dir(math)) print(math.pow(2, 3), type(math.pow(2, 3))) # 2的3次方 print(math.ceil(9.001)) # 天花板 # 大于该值的最小整数 print(math.floor(9.999)) # 地板 # 小于该值的最大整数 print('------from 模块名称 import 函数/变量/类------') from math import pi import math print(pi) print(pow(2, 3)) # 不在math模块内的pow() print(math.pow(2, 3)) # 在math模块内pow()
建立calc.py模块
# Name: Python study # Designer: MilesHugh # Time: 2023/4/14 10:44 def add(a, b): return a + b def div(a, b): return a / b # 如何导入自定义模块
使用自定义模块:
# Name: Python study # Designer: MilesHugh # Time: 2023/4/14 10:45 # 在demo3中导入calc自定义模块的使用 import calc print(calc.add(10, 20)) print(calc.div(10, 4)) from calc import add print(add(10, 20))
3、以主程序的形式执行
- 在每个模块的定义中都包括一个记录模块名称的变量_name_,程序可以检查该变量,以确定他们在哪个模块中执行。如果一个模块不是被导入其它程序中执行,那么它可能在解释器的顶级模块中执行。顶级模快的_name_变量的值为_main_
if _name_ = '_main_' : pass
建立calc2模块
# Name: Python study # Designer: MilesHugh # Time: 2023/4/14 11:01 def add(a, b): return a + b if __name__ == '__main__': print(add(10, 20)) # 只有当点击运行calc2时,才会执行运算
引用calc2模块:
# Name: Python study # Designer: MilesHugh # Time: 2023/4/14 10:49 import calc2 print(calc2.add(100, 200))
4、python中的包
- 包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下。一个python程序包含N多个包,一个包里面包含N多个模块
- 作用:
- 代码规范
- 避免模块名称冲突
- 包与目录的区别
- 包含_init_.py文件的目录称为包,新建package文件
- 目录里通常不包含_init_.py文件,新建directory文件
- 包的导入
import 包名.模块名
新建package1包中的模块:
moduleA:
# Name: Python study # Designer: MilesHugh # Time: 2023/4/14 12:03 a = 10
moduleB:
# Name: Python study # Designer: MilesHugh # Time: 2023/4/14 12:03 b = 100
在demo5中导入包的方式:
# Name: Python study # Designer: MilesHugh # Time: 2023/4/14 12:04 # 在demo5中导入 package1 包 import package1.moduleA print(package1.moduleA.a) import package1.moduleA as ma # ma是package1.moduleA这个模块的别名 print(ma.a) # 导入带有包的模块时注意事项 import package1 import calc # 使用import方式进行导入时,只能跟包名或模块名 from package1 import moduleA from package1.moduleA import a # 使用from...import可以导入包、模块、函数、变量
5、Python中常用的内置模块
模块名 | 描述 |
sys | 与Python解释器及其环境操作相关的标准库 |
time | 提供与时间相关的各种函数的标准库 |
os | 提供了访问操作系统服务功能的标准库 |
calendar | 提供与日期相关的各种函数的标准库 |
urllib | 用于读取来自网上(服务器)的数据标准库 |
json | 用于使用JSON序列化和反序列化对象 |
re | 用于在字符串中执行正则表达式匹配和替换 |
math | 提供标准算术运算函数的标准库 |
decimal | 用于进行精准控制运算精度、有效数位和四舍五入操作的十进制运算 |
logging | 提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能 |
urllib和json在爬虫中会用到
# Name: Python study
# Designer: MilesHugh
# Time: 2023/4/14 12:20
import math
import sys
import time
import urllib # 在爬虫中可能会用到包
import urllib.request
print(sys.getsizeof(24)) # 得到字节大小
print(sys.getsizeof(45))
print(sys.getsizeof(True))
print(sys.getsizeof(False))
print('--------')
print(time.time()) # 输出秒
print(time.localtime(time.time())) # 输出本地时间
print('--------')
print(urllib.request.urlopen('http://www.baidu.com').read()) # 读取百度的URL的内容
print('--------')
print(math.pi)
6、第三方模块的安装及使用
- 第三块模块的安装
pip install 模块名
- 第三方模块的使用
import 模块名
# Name: Python study
# Designer: MilesHugh
# Time: 2023/4/14 12:32
import schedule # 进行计划的一个包
import time
def job():
print('嘿嘿~')
schedule.every(3).seconds.do(job) # 每个3秒休眠时间,工作一次,输出
while True:
schedule.run_pending()
time.sleep(1)