活动地址:CSDN21天学习挑战赛
今天继续模块的学习和练习
模块
1,logging模块
通常可以进行配置,默认输出什么样级别的日志,尽可能少的输出日志,本人经历过写日志能把服务器写死的,所以不是无限制的使用。
- 日志的级别(各类计算机语言通用):从高到低
- ERROR(错误)例如支付失败,需要把日志记录起来
- WARN(警告)系统出问题了,但是不影响使用,通常在try catch 时打印此日志
- INFO(通知) 一些简单的流程操作日志,例如每天10点运行一次,有没有正常运行可使用此级别。
- DEBUG(调试)实际运行时,不会输出该级别的日志,通常用在测试环境。
import logging
# 【记录器】初始化
logger = logging.getLogger("Log")
# 设置记录器对应日志级别
logger.setLevel(logging.INFO)
# 【屏幕处理器】
sh = logging.StreamHandler()
sh.setLevel(logging.INFO)
# 【格式化器 】
fmt = "%(asctime)s %(levelname)s [%(name)s] [%(filename)s(%(funcName)s:%(lineno)d)] - %(message)s"
formatter = logging.Formatter(fmt)
# 【文件处理器】
fh = logging.FileHandler(filename="D:/abc.log", mode="a", encoding="UTF8")
fh.setLevel(logging.INFO)
# 将格式化器添加到处理器
sh.setFormatter(formatter)
fh.setFormatter(formatter)
# 将处理器添加到记录器
logger.addHandler(sh)
logger.addHandler(fh)
logger.debug("我应该不会显示")
# 正常显示在控制台
logger.error("出现异常")
以上代码可以提取到一个方法里面去。
2,math模块
算是计算机通用的内置对象,基本上是计算机语言都有,包含基本的科学计算,但是精度需要注意。
- 关于此类知识,不建议过深入的学习,遇到的时候百度吧,如果不是从事这块,你也记不住,是从事这块的你也忘不了。
- ceil(小数) 向上(天花板)取整
- floor(小数)向下(地板)取整
- round(小数) 四舍五入计算法
- fabs 取绝对值,返回值格式是浮点数(小数)
- abs 取绝对值
- fmod(x,y) 返回x除以y的余数,格式是浮点数(小数)
- sqrt() 开方
- decimal模块(没想到这个也有,这个是解决精度问题的)
- 设置精度(设置几位有效位) decimal.getcontext().prec = 2
- 设置小数位数 decimal.Decimal(1.556).quantize(decimal.Decimal("0.00"))
import decimal print(decimal.Decimal(1.556).quantize(decimal.Decimal("0.00"))) # 1.56 四舍五入(设置小数位数)??
3,json模块
类似做一些序列化和反序列化操作,也简单的学几个方法。
- dumps(obj) 对象转字符串
- dumps(obj,fp)把对象写入json文件
- loads(str) 字符串转对象
- load(fp) 读取json文件
import json
student = {"name":"小红","age":15,"subject":["语文","数学","英语"]}
# json 字符串格式化输出
print(json.dumps(student, sort_keys=True, indent=4, separators=(',', ': ')))
# 将字符串转Python数据,其实就是字典类型,字符串格式不一定是这种,有转义符号比较常见
str = '{"name":"小红","age":15,"subject":["语文","数学","英语"]}'
print(json.loads(str))
提醒:在发布作品前请把不用的内容删掉(活动地址请保留)