【python基础学习09课_装饰器、模块、文件】

一、项目的日志

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 timetime.sleep(2)  # 强制休眠# 获取当前时间
print(time.time())使用方法时,是 模块.方法  例如:time.sleep(2)
2)from 模块 import 方法,使用模块中的1种方法
规则:
from 模块 import 方法举例:from time import sleepprint(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、读取会从光标处往读取,所以写完,要关闭文件再读取,直接写完就读,取光标后面啥也没有。啥也读不出来。

 要给文件一个读取(打开)操作,才能读

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/520168.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

启动CMD/powershell命令窗口时,设置默认的python虚拟环境 in window10

启动CMD/powershell命令窗口时,设置默认的python虚拟环境 in window10 本文有两个目的: CMD命令窗口, 设置默认启动的python环境PowerShell命令窗口, 设置默认启动的python环境 CMD命令窗口, 设置默认启动的python环…

YOLOv5目标检测学习(2):运行一个yolo应用所需要配置的深度学习环境

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、CUDA、CUDNN的下载安装1.1 CUDA的安装1.2 cuDNN的配置 二、anaconda的安装1.卸载python2.安装anaconda 三、Pytorch、python虚拟环境安装1.创建虚拟环境2.安…

Easticsearch性能优化之索引优化

Easticsearch性能优化之索引优化 一、合理的索引设计二、合理的分片和副本三、合理的索引设置 对于性能优化,Elasticsearch(以下简称ES)的索引优化是提高性能的关键因素之一。合理的设计索引,合理的分片和副本以及合理的缓存设置等…

稀碎从零算法笔记Day11-LeetCode:有效的字母异位词

题型:字符串、哈希表、排序 链接:242. 有效的字母异位词 - 力扣(LeetCode) 来源:LeetCode 题目描述 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。 注意:若 s 和 …

第五十一天| 309.最佳买卖股票时机含冷冻期、714.买卖股票的最佳时机含手续费

第四十八天| 121. 买卖股票的最佳时机、122.买卖股票的最佳时机II-CSDN博客 第五十天| 123.买卖股票的最佳时机III、188.买卖股票的最佳时机IV-CSDN博客 Leetcode 309.最佳买卖股票时机含冷冻期 题目链接:309 最佳买卖股票时机含冷冻期 题干:给定一个…

想用Python做自动化测试?Python反射机制的应用!

通常,我们操作对象的属性或者方法时,是通过点“.”操作符进行的。例如下面的代码: class Person: type "mammal"def __init__(self, name): self.name namedef say_hi(self): print(Hello, my name is, self.n…

006-浏览器输入域名到返回

浏览器输入域名到返回 1、URL 输入2、DNS 域名解析3、建立 TCP 连接三次握手概念三次握手理解 4、发送 HTTP/HTTPS 请求5、服务器处理,并返回响应6、浏览器解析并渲染页面7、请求结束,端口 TCP 连接四次挥手概念四次挥手理解 1、URL 输入 2、DNS 域名解析…

[HackMyVM]靶场 Wild

kali:192.168.56.104 主机发现 arp-scan -l # arp-scan -l Interface: eth0, type: EN10MB, MAC: 00:0c:29:d2:e0:49, IPv4: 192.168.56.104 Starting arp-scan 1.10.0 with 256 hosts (https://github.com/royhills/arp-scan) 192.168.56.1 0a:00:27:00:00:05 …

20240307-2-前端开发校招面试问题整理HTML

前端开发校招面试问题整理【2】——HTML 1、HTML 元素&#xff08;element&#xff09; Q&#xff1a;简单介绍下常用的 HTML 元素&#xff1f; 块状标签&#xff1a;元素独占一行&#xff0c;可指定宽、高。 常用的块状元素有&#xff1a; <div>、<p>、<h1&…

横琴正式封关运行,惟客数据都做了什么?

​作为中国实施高水平制度型开放的重大探索&#xff0c;位于珠海横琴岛的横琴粤澳深度合作区于2024年3月1日零时正式实施分线管理封关运行&#xff0c;共设1个“一线”口岸、7个“二线”海关作业现场&#xff0c;覆盖旅检、货运、通关、稽&#xff08;核&#xff09;查等多线条…

火柴排队(逆序对 + 离散化)

505. 火柴排队 原题链接 思路 如下是画图分析的一些过程 在这里贪心的思路是排序&#xff0c;然后两个数组都是从小到大那样对应的话最终的答案可达到最小 而我们只能交换相邻的火柴&#xff0c;故在这里先假设一个简化版本&#xff0c;即A有序&#xff0c;而只需要对B进行…

【数据结构五】队列和Queue详解

目录 队列 1.模拟实现一个队列 2.Queue的基本使用 3.循环队列详解 4.双端队列详解 5.分别用栈实现队列&#xff0c;队列实现栈 队列 队列 &#xff1a;只允许在一端进行插入数据操作&#xff0c;在另一端进行删除数据操作的特殊线性表&#xff0c;队列具有先进先出 FIFO(Fi…