Python的模块和包
一、Python中的模块
1.什么叫做模块
1.
模块
:英文名modules
2.在
Python
中 一个拓展名为.py
的文件就是一个模块3.函数与模块的关系:
- 包含语句
- 包含类
class
- 一个模块中可以包含
n
多个函数def
4.使用模块的好处:
- 方便其它程序和脚本的导入
- 避免函数名和变量名冲突
- 提高代码的可维护性
- 提高代码的课重用性
# -*- coding: utf-8 -*-
# @File : demo.py
# @author: Flyme awei
# @email : Flymeawei@163.com
# @Time : 2022/8/16 11:58
def fun(): # 函数
pass
class Student: # 类
a = 'hello' # 类属性
def __init__(self, name): # 初始化方法
self.name_ = name # 实例属性
def __str__(self): # 实例方法
pass
@staticmethod
def cm():
print('静态方法')
@classmethod
def cs(cls):
print('类方法')
a = 10 # 变量
b = 20
c = a + b # 语句
2.导入模块
创建模块:
新建一个.py
文件,名称尽量不要与python
自带的标准模块名相同
导入模块:
import 模块名称 as 别名 # 导入模块中所有的
from 模块名称 import 函数/变量/类 # 导入模块的指定内容
代码实现:
# -*- coding: utf-8 -*-
# @author: Flyme awei
# @email : Flymeawei@163.com
# @Time : 2022/8/16 11:58
import math # 导入关于数学运算的模块
print(id(math))
print(type(math)) # module
print(math)
print('----------------')
print(math.pi) # 3.14...
print(dir(math))
print(math.pow(2, 3)) # 幂 2**3=8
print(math.e)
print(math.ceil(9.435)) # 取上整
print(math.floor(9.35)) # 取下整
print(math.log(2, 4))
from math import pi # 导入模块指定的内容
print(pi)
3.导入自定义模块
自定义模块calc
# -*- coding: utf-8 -*-
# @File : calc.py
# @author: Flyme awei
# @email : Flymeawei@163.com
# @Time : 2022/8/16 11:58
def add(a, b):
return a+b
def div(a, b):
return a/b
导入自定义模块 calc
import calc # 导入自定义模块 calc
print(calc.add(10, 20))
print(calc.div(8, 2))
from calc import add # 自定义导入calc模块的add方法
print(add(23, 53))
4.以主程序的方式运行
在每个模块的定义中都包含了一个记录模块名称的变量__name__
,程序可以检查该变量,以确定他们在哪个模块中执行。如果一个模块不是被导入到其他程序中执行,那么它可能在解释器的顶级模块中执行。
顶级模块
__name__
变量的值为__main_
_
语句:
if __name__ = '__main__':
pass
自定义模块calc2
# -*- coding: utf-8 -*-
# @File : calc2.py
# @author: Flyme awei
# @email : Flymeawei@163.com
# @Time : 2022/8/16 11:58
def add(a, b):
return a+b
if __name__ == '__main__':
print(add(10, 20)) # 只有当点击运行calc2模块时,才会执行运算
导入calc2
模块
# 顶级模块__name__变量的值为__main__
import calc2 # 调用calc2的 add 模块
print(calc2.add(100, 200))
二、Python中的包
1.包是一个分层次的目录结构,它将一组功能相近的模块组织在一个目录下
2.包的作用:
- 代码规范
- 避免模块名称冲突
3.包与目录的区别:
- 包含
__init__.py
文件的目录称为包
- 目录里通常不包含
__init__.py
文件4.包的导入:
import 包名.模块名
包package1
下面有module_A
模块和module_B
模块
module_A
模块
# -*- coding: utf-8 -*-
# @File : module_A.py
# @author: Flyme awei
# @email : Flymeawei@163.com
# @Time : 2022/8/16 11:58
# 包的导入
a = 10
module_B
模块
# -*- coding: utf-8 -*-
# @File : module_B.py
# @author: Flyme awei
# @email : Flymeawei@163.com
# @Time : 2022/8/16 11:58
b = 100
导入包package1
'''
包的导入
import 包名.模块名
'''
import package1.module_A as ma # 导入包package1中的module_A模块
print(ma.a) # 10
导入带有包的模块注意事项
1.使用import
方式进行导入时,只能跟包名
或模块名
import package1
import package1.module_A
import calc
2.使用from...import
可以导入包
,模块
,函数
,变量
from package1 import module_A # 导入模块module_A
from package1.module_A import a # 导入变量a
print(a) # 10
三、Python中常用的内置模块
模块名 | 描述 |
---|---|
sys |
与python解释器 及环境相关的标准库 |
time |
提供时间 相关的各种函数标准库 |
os |
提供访问操作系统 服务功能的标准库 |
calendar |
提供与日期 相关的各种函数的标准库 |
urllib |
用于读取来自网上(服务器 )的数据标准库 |
json |
用于使用JSON 序列化和反序列化对象 |
re |
用于在字符串中执行正则表达式 匹配和替换 |
math |
提供标准运算 函数的标准库 |
decimal |
用于进行精确控制运算精度、有效数位和四舍五入操作的十进制运算 |
logging |
提供了灵活的记录事件、错误、警告和调试信息等日志信息 的功能 |
'''
模块名 描述
----------------------------------------------------------
1.sys 与python解释器及环境相关的标准库
2.time 提供时间相关的各种函数标准库
3.os 提供访问操作系统服务功能的标准库
4.calendar 提供与日期相关的各种函数的标准库
5.urllib 用于读取来自网上(服务器)的数据标准库
6.json 用于使用JSON序列化和反序列化对象
7.re 用于在字符串中执行正则表达式匹配和替换
8.math 提供标准运算函数的标准库
9.decimal 用于进行精确控制运算精度、有效数位和四舍五入操作的十进制运算
10.logging 提供了灵活的记录事件、错误、警告和调试信息等日志信息的功能
'''
1.sys
模块
与python解释器及环境相关的标准库
import sys # 导入与python解释器和环境相关的标准库
print(sys.getsizeof(24)) # 字节
print(sys.getsizeof(54))
print(sys.getsizeof(True))
print(sys.getsizeof(False))
2.time
模块
提供与时间相关各种函数的标准库
# time 提供与时间相关各种函数的标准库
import time
print(time.time())
print(time.localtime(time.time()))
3.os
模块
提供访问操作系统服务功能的标准库
# 提供访问操作系统服务功能的标准库
import os
4.urllib
模块
import urllib.request
print(urllib.request.urlopen('http://www.baidu.com').read())
四、第三方模块
1.第三方模块安装
pip install 模块名
2.第三方模块使用
import 模块名
import time
import schedule
def job():
print('哈哈哈哈哈哈哈哈')
schedule.every(1).seconds.do(job)
while True:
schedule.run_pending()
time.sleep(1)