一、项目的日志
1、日志意义与级别
1、日志的意义:
项目的日志 -- 开发编写的,日志记录 -- 测试就是去查看日志信息(为了协助我们进行问题的定位)
可以根据日志,看是哪个应用的哪台机器,出现了什么问题,以及问题对于的代码行数等。便于定位问题
日志:记录程序在运行的时候流程是否正常 -- 可以是系统日志、可以是自定义的日志
2、日志的级别:
debug: 调试信息输出
info: 正常信息输出
warning:警告信息输出
error: 报错信息输出
注意:需要使用日志模块,就得先定义日志的级别 (DEBUG > INFO > WARNING > ERROR)
3、日志的使用:
1)import logging # 导入python的日志模块
2)logging.basicConfig(level=logging.WARNING) #设置日志级别
3)logging.日志级别,例如下面
# def fun1():
# logging.info("正常信息输出")
# logging.debug("调试信息输出")
# logging.warning("警告信息输出")
# logging.error("报错信息输出")
1)info级别的日志
root是用户身份
2)error级别的日志
3)debug级别的日志
4)warring级别的日志
5)利用函数的传递,在调用另一个函数的时候,也打印另一个函数日志
6)print 和 logging.info的打印是没有先后顺序的
同样的代码打印的效果也会不同
或者是
二、装饰器--
1、自定义装饰器
自定义装饰器:在原有调用函数的前/后,额外添加一些代码/步骤。在不改变原有函数的情况下,给原有的函数增加一些步骤、功能,用于维护更新,也就是装饰原有的函数。
装饰器的语法规则:
def 第一个函数(用来接收原有函数本体的参数):
def 第二个函数():
增加一些代码的步骤,在原有函数之前,进行调用
原有函数的调用
增加一些代码的步骤,在原有函数之后,进行调用
return 第二个函数的本体
上面写的这个函数就是装饰器,然后给原有的函数,通过在函数头部 @装饰器函数名 来使用装饰器。再不改变原有函数的情况下,通过装饰器做了很多操作。
@装饰器函数名
原有函数
Python装饰器是一种设计模式,用于修改一个函数、方法或类的行为,而不需要改变其使用方式。装饰器本质上是一个接收函数作为参数并返回一个新函数的可调用对象。装饰器经常用于有切面需求的场景,比如:插入日志、性能测试、事务处理、缓存、权限校验等。
装饰器的作用可以概括为以下几点:
1. **代码重用**:装饰器可以让你在不修改函数代码的情况下,为函数添加额外的功能。这样可以减少代码重复,提高代码的可维护性。
2. **模块化**:通过使用装饰器,可以将与函数核心功能无关的代码(如日志记录、性能测试等)抽离出来,使函数更加专注于其核心任务。
3. **动态修改行为**:装饰器可以在运行时动态地修改函数的行为,而不需要在代码中显式地调用其他函数或修改函数定义。
4. **易于测试**:由于装饰器是独立的代码块,你可以单独测试每个装饰器,确保它们正确执行预期的任务。
5. **命名空间管理**:装饰器有助于管理变量作用域,防止全局命名空间的污染。
6. **封装**:装饰器可以将一系列操作封装在一起,隐藏内部实现,只暴露必要的接口。
装饰器有几种不同的形式,包括:
- **函数装饰器**:用于装饰函数,可以修改函数的行为。
- **类装饰器**:用于装饰类,可以修改类的行为。
- **方法装饰器**:用于装饰类的方法,可以修改方法的行为。
装饰器是Python中一个非常强大和有用的特性,可以帮助你写出更加清晰、简洁和可维护的代码。
1)装饰器原理--不带位置参数的
2)装饰器原理--带位置参数的
但是没人会写 函数名+2个括号这种()()
2、升级版本装饰器
优化升级:
@符号,在原有函数的头部进行添加 -- @装饰器函数的名称
当程序运行的时候,遇到了@符号,就会自动取寻找这个函数进行执行
在运行装饰器函数的时候,会默认把原有函数的本体当做参数进行传入
只要遵循自定义装饰器的语法规则进行书写,就可以完成,在不改变原有函数调用的情况下,进行前/后置步骤的添加
在自动化的课程中,会存在一些框架自带的装饰器使用
1)正常使用的装饰器
2)装饰器传参
三、模块
python中: 包(package) 和 模块(module)
包(package):就是python的文件夹
模块(module):就是python文件 .py类型文件 但是模块不包含.py后缀,是前面的文件名
1、python中,很简单,一个是包,一个是模块
1)import 模块,使用模块中的所有方法
例如:
规则:
import 模块
举例:
import time
time.sleep(2) # 强制休眠
# 获取当前时间
print(time.time())
使用方法时,是 模块.方法 例如:time.sleep(2)
2)from 模块 import 方法,使用模块中的1种方法
规则:
from 模块 import 方法
举例:
from time import sleep
print(sleep(2))
使用方法时,是 直接方法 例如:sleep(2)
四、文件
文件的类型:
在自动化的课程有对应的数据使用:excel\yaml\txt
文件就是,要么读,要么写
真正的文件和数据放在磁盘里面,但是读磁盘很慢。
当前需要的数据,会放在内存里面,读取较快,也可以清理内存
python能够读取计算机文件,将读取到的内容放到内存空间里
1、文件的读取
语法规则:
file = open("文件的路径", encoding="编码格式", mode="文件操作的方式")
注意:file是一个变量,可以自定义
文件的路径,我们一般选择 绝对路径
mode:读取的话,里面是'r'
文件读取的方式:
r - 读 w - 写(覆盖写入) a - 追加写入(在原有的内容之后,进行追加写入)
r+ w+ a+ 读写
python中的文件
1)文件的本质
2)文件的读取
3)文件的关闭
存放前,被关闭
关闭前,存放到msg变量
4)只读取文件的第一行
5)读取文件的所有行数据
此时读取的数据为列表形式,每一行为一个元素,长度为行数
6)只打印文件中你想打印的内容
2、文件的写入
1)文件的覆盖写入-
mode='w'
不建议使用,会让数据丢失,无法找回
不过 ctrl+z好像是可以让覆盖的恢复一下
2)文件的追加写入
3)光标的问题
1、默认写在文字后面
2、读取会从光标处往读取,所以写完,要关闭文件再读取,直接写完就读,取光标后面啥也没有。啥也读不出来。
要给文件一个读取(打开)操作,才能读