模块和包
- 一个文件(.py)就是一个模块,模块名就是文件名去掉后缀py。
好处:
- -提高代码的可复用、可维护性。一个模块编写完毕后,可以很方便的在其他项目中导入
- -解决了命名冲突,不同模块中相同的命名不会冲突
导入模块的方式
模块循环导入问题
A:模块
def test():
f()
B: 模块
def f():
test()
解决方法:
- 重新架构
2.将导入的语句放到函数里面
3.把导入语句放到模块的最后
导入包的方式
文件夹+ __init__.py 文件 =包
导入方式和模块的导入大致相同
from 包 import 模块
from 包.模块 import 类/函数/变量
from 包.模块 import *(其中的方法和模块的一样)
os模块
os全称 OperationSystem操作系统
os 模块里提供的方法就是用来调用操作系统里的方法
os.getcwd() # 获取当前的工作目录,即当前python脚本工作的目录
os.chdir('C:\\') # 切换工作目录
os.rename('毕业论文.txt','毕业论文-最终版.txt') # 文件重命名
os.remove('毕业论文.txt') # 删除文件
os.rmdir('demo') # 只能删除空文件夹
os.removedirs('demo') # 删除空文件夹
os.mkdir('demo') # 创建一个文件夹
os.listdir('C:\\') # 列出指定目录里的所有文件和文件夹
os.name # nt->widonws posix->Linux/Unix或者MacOS
os.environ # 获取到环境配置
os.environ.get('PATH') # 获取指定的环境配置
os模块里的 path 经常会使用
# abspath ==> 获取文件的绝对路径
print(os.path.abspath('01-高阶函数.py'))
# isdir判断是否是文件夹
print(os.path.isdir('02-函数的嵌套.py')) # False
print(os.path.isdir('xxx')) # True
# isfile 判断是否是文件
print(os.path.isfile('03-闭包的概念.py')) # True
print(os.path.isfile('xxx')) # False
# exists 判断是否存在
print(os.path.exists('05-优化计算时间的代码.py')) # True
print(os.path.exists('mmm.py')) # False
file_name = '2020.2.21.demo.py'
# 分隔文件的扩展名,返回(路径,扩展名)形式的二元组
print(os.path.splitext(file_name)) #('2020.2.21.demo', '.py')
sys模块
import sys
sys.path # 模块的查找路径,以列表的形式储存
sys.argv # 传递给Python脚本的命令行参数列表
sys.exit() #退出当前程序,一般用于主线程的退出
sys.stdin # 标准输入。可以通过它来获取用户的输入
sys.stdout # 标准输出。可以通过修改它来改变默认输出
sys.stderr # 错误输出。可以通过修改它来改变错误删除
math模块
模块中有大量常用的数字计算函数
import math
print(math.fabs(-100)) # 取绝对值
print(math.ceil(34.01)) #向上取整,有小数就往上取
print(math.floor(34.98)) # 向下取整
print(math.factorial(5)) # 计算阶乘
print(math.pi) # π的值,约等于 3.141592653589793
print(math.pow(2, 10)) # 2的10次方
print(math.sin(math.pi / 6)) # 正弦值
print(math.cos(math.pi / 3)) # 余弦值
print(math.tan(math.pi / 2)) # 正切值
random模块
主要用于生成随机数或者从一个列表里随机获取数据。
import random
random.random() # 生成 [0,1)的随机浮点数,取不到1
random.uniform(a, b) # 生成[a,b]的随机浮点数
random.randint(a, b) # 生成[a,b]的随机整数
random.randrange(a, b) # 生成[a,b)的随机整数,取不到b
random.choice('abcdefg') # 从列表里随机取出一个元素
random.sample('abcdefghij', 3) # 从列表里随机取出指定个数的元素
datetime模块
datetime模块主要用来显示日期时间,
date类,用来显示日期;
time类,用来显示时间;
datetime类,用来显示日期时间;
timedelta类,用来计算时间。
import datetime
print(datetime.date(2020, 1, 1)) # 创建一个日期
print(datetime.time(18, 23, 45)) # 创建一个时间
print(datetime.datetime.now()) # 获取当前的日期时间
print(datetime.datetime.now() + datetime.timedelta(3)) # 计算三天以后的日期时间
time模块
time模块不仅可以用来显示时间,还可以控制程序,让程序暂停(使用sleep函数)
import time
print(time.time()) # 获取从1970-01-01 00:00:00 UTC 到现在时间的秒数
print(time.strftime("%Y-%m-%d %H:%M:%S")) # 将时间格式化形式显示
print(time.asctime()) # Mon Apr 15 20:03:23 2019
print(time.ctime()) # Mon Apr 15 20:03:23 2019
# time.struct_time(tm_year=2022, tm_mon=4, tm_mday=1,
# tm_hour=15, tm_min=43, tm_sec=21, tm_wday=4, tm_yday=91, tm_isdst=0)
print(time.localtime()) # 获取本地时间
print('hello')
print(time.sleep(1)) # 让线程暂停10秒钟
print('world')
calendar模块
日历模块
import calendar
print(calendar.calendar(2022)) # 生成2022年日历
print(calendar.month(2022, 4)) # 生成2022年4月的日历
print(calendar.isleap(2022)) # False 判断是否是闰年
hashlib和hmac模块
这两个模块都是用来进行数据加密
hashlib模块里主要支持两个算法 md5 和 sha 加密
加密方式: 单向加密:只有加密的过程,不能解密md5/sha 对称加密 非对称加密rsa
第三方模块
- 基本操作
pip install <package_name> 用来下载一个第三方的模块
pip uninstall <package_name> 用来删除第三方模块
pip list 或 pip freeze 用来列出当前环境安装的模块名和版本号
使用 install ,默认是从 pythonhosted下载,由于各种原因,在国内下载速度相对来说比较慢,在某些时候甚至会出现连接超时的情况,我们可以使用国内镜像来提高下载速度。
常见国内镜像
- 阿里云 https://mirrors.aliyun.com/pypi/simple/
- 中国科技大学 https://pypi.mirrors.ustc.edu.cn/simple/
- 豆瓣(douban) https://pypi.douban.com/simple/
- 清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
- 中国科学技术大学 https://pypi.mirrors.ustc.edu.cn/simple/
临时修改下载地址
如果只是想临时修改某个第三方资源包的下载地址,在第三方包名后面添加 -i 参数,再指定下载路径即可,格式为pip install <包名> -i <国内镜像路径>
pip install 包名 -i https://pypi.douban.com/simple
永久修改下载地址
在当前用户目录下创建一个pip的文件夹,然后再在文件夹里创建pip.ini文件并输入一下内容:
[global]
index-url=https://pypi.douban.com/simple
[install]
trusted-host=pypi.douban.com
- 在开发中,我们在将程序部署到服务器的时候, 我们要把代码和第三方资源包都给服务器。但是每个项目的第三方资源包又不一致时,
- 怎么办呢?-----------使用虚拟环境
- 使用 pip freeze > requires.txt 命令,将代码里使用到的第三方资源包以及版本号写入到
requirements.txt 文件,在部署时,将 requirements.txt 文件上传到服务器。 - 服务器在拿到代码以后,首先运行 pip install -r requirements.txt
命令,将文件里列出的所有第三方框架先安装到服务器,然后才能运行代码。