![](https://img-blog.csdnimg.cn/20210325211005659.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
python
文章平均质量分 88
Python整理,总结提升!!!
lady_killer9
CKA、CKS证书持有者,安全工程师
展开
-
python-redis缓存装饰器
key生成:用户不指定key时需要自动生成,统一前缀方便后序更新、删除指定key:用户可以指定key(redis_decorator无法指定key)缓存和获取功能常见类型的缓存支持用户自定义类型可以继承抽象类,实现序列化和反序列化方法(redis_decorator没有)指定key的更新(包没有)指定或批量key的删除(redis_decorators只有删除指定key)支持协程(包没有)原创 2024-03-17 17:53:07 · 725 阅读 · 0 评论 -
Python-ElasticSearch客户端的封装(聚合查询、统计查询、全量数据)
官方提供了两个客户端elasticsearch、elasticsearch-dsl第二个是对第一个的封装,类似ORM操作数据库,可以.filter、.groupby,个人感觉很鸡肋,star数也不多。平时使用的时候一般会在kibana上测试,然后直接把query拷贝过来获取更多数据,所以这里做下第一个的封装。原创 2023-07-30 17:04:56 · 1319 阅读 · 0 评论 -
Python-datetime、time包常用功能汇总
timedelta(days=0, seconds=0, microseconds=0, milliseconds=0, minutes=0, hours=0, weeks=0) 用于表示两个时间的间隔。以补零后的十进制数表示的一年中的周序号(星期日作为每周的第一天)。以补零后的十进制数表示的一年中的周序号(星期一作为每周的第一天)。以补零后的十进制数表示的小时(24 小时制)。补零后,以十进制数表示的,不带世纪的年份。以补零后的十进制数表示的一年中的日序号。补零后,以十进制数显示的月份中的一天。原创 2023-02-24 21:16:57 · 737 阅读 · 1 评论 -
python-协程(async、await关键字与asyncio)
进程和线程是计算机提供的,协程是程序员创造的,不存在于计算机中。协程(Co-routine),也可称为微线程,或非抢占式的多任务子例程,一种用户态的上下文切换技术(通过一个线程实现代码块间的相互切换执行)在一个线程(协程)中,遇到io等待时间,线程可以利用这个等待时间去做其他事情。原创 2023-02-05 17:34:44 · 4462 阅读 · 5 评论 -
python-pymysql常用功能封装
pymysql是一个客户端,本文进行一个简单封装,主要是结构化和批量操作。原创 2023-01-25 20:37:00 · 471 阅读 · 0 评论 -
python-轻量级ORM库peewee的使用
比较小巧的ORM,支持sqlitemysqlpostgresql。原创 2023-01-25 19:41:40 · 379 阅读 · 0 评论 -
Python-logging详解(彩色日志扩展,多进程安全等)
目录简介日志级别记录器处理器格式器多线程与多进程安全代码导入及全局变量函数实验及结果参考简介日志是工程中不可缺少的一部分,国家等保2.0也规定,至少保留日志180天。对于程序员来说,日志也方便进行记录及排错。logging是Python自带的日志模块,主要有以下几个部分: 记录器暴露了应用程序代码直接使用的接口。 处理器将日志记录(由记录器创建)发送到适当的目标。 过滤器提供了更细粒度的功能,用于确定要输出的日志记录。原创 2021-10-13 11:46:25 · 8761 阅读 · 4 评论 -
有限状态机详解与举例(leetcode 1023)
目录三特征四要素注意项举例leetcode1023思路代码三特征状态(state)总数是有限的 任意时刻只处于一种状态 某条件下会从一个状态转到下一个状态四要素当前状态:当前所处的状态 条件/事件:触发动作或转换的情况,例如输入 动作/转换:根据条件/事件,将一个状态转换到下一状态 下一状态:动作转换的下一状态,转换后这一状态就成了当前状态注意项状态不要漏掉 动作不要当做状态举例leetcode1023如果我们可以将小写字母插入模式串..原创 2021-10-07 12:35:35 · 1642 阅读 · 0 评论 -
Python-常见面试题汇总
函数什么是lambda函数?lambda函数也叫匿名函数,该函数可以包含任意数量的参数,但只能有一个执行操作的语句。装饰器装饰器的作用和功能?引入日志 函数执行时间统计 执行函数栈预备处理 执行函数后的清理功能 权限校验 缓存迭代器、生成器迭代器和生成器的区别是什么?生成器能做到迭代器能做的所有事,而且因为自动创建了__iter__()和next()方法,生成器显得特别简洁,而且生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保持程序状态的自原创 2021-04-15 10:31:49 · 13553 阅读 · 4 评论 -
Python-单例模式详解与实现
单例模式这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。主要解决:一个全局使用的类频繁地创建与销毁。何时使用:当您想控制实例数目,节省系统资源的时候。如何解决:判断系统是否已经有这个单例,如果有则返回,如果没有则创建。应用:例如,数据库连接,可使用原创 2021-04-08 10:53:20 · 12785 阅读 · 2 评论 -
Python-configparse模块详解与代码示例
引入配置文件在项目中是常见的,一般是.ini或xml等格式,例如,在mysql中就是my.ini进行配置。xml对于非计算机类的用户来说,不是很友好。Mysql的简单配置如果要你写一个配置文件解析器,你有什么思路呢?例如:文件结构规定,规定参数和值、规定注释 读取配置文件的配置项,配置文件的参数、值的分隔符规定,注释规定等 删除配置文件的配置项 修改配置文件的配置项 添加配置文件的配置项 检查配置文件的配置项 ...INI文件结构配置文件是由小节组成的,每个小节都有...原创 2021-04-08 10:48:49 · 13115 阅读 · 1 评论 -
Python-argparse命令解析模块详解与代码展示
在类似sqlmap这种命令行框架,经常敲这样的命令python xxx.py -u http://example.com -p 80这是怎么实现的呢?这就用到了argparse模块,本文主要讲解思路,主要将选项参数。示例import argparseparser = argparse.ArgumentParser(description='Process some integers.')parser.add_argument('integers', metavar='N', ty原创 2021-04-07 10:54:42 · 13140 阅读 · 1 评论 -
Python-最详细模块/包的(动态)导入
目录前言模块导入什么是模块?import搜索路径asdir__name__from xxx import ...包导入命名空间包中模块的import动态导入内置函数 __import__()importlib参考前言你是否会出现下图中导模块时找不到的情况呢?ModuleNotFoundError,也就是模块没有找到,不要慌,今天总结导包的所有问题。模块导入什么是模块?容器->数据的封装函数->语句的.原创 2021-03-27 17:03:27 · 20870 阅读 · 0 评论 -
Python-函数式编程模块itertools、functools、operator
目录上篇文章思考题itertools无穷迭代器count 计数cycle 循环repeat 重复排列组合迭代器product 笛卡儿积permutations 排列combinations 组合其他迭代器accumulate 累加functoolslru_cache 最近最少使用reduce 累积缩减operator参考上篇文章思考题Python-函数式编程(高阶函数、匿名函数、返回函数、装饰器)display = print原创 2021-03-22 21:35:19 · 11518 阅读 · 0 评论 -
Python-函数式编程(高阶函数、匿名函数、返回函数、装饰器)
上篇文章思考题Python-函数基础总结与内置函数1.def plus(*args): return sum(args)print(plus(1, 2, 3))print(plus(2, 4, 6, 8, 10))结果:6302.def power(x=2, n): return x ** n结果: def power(x=2, n): ^SyntaxError: non-default ar...原创 2021-03-22 17:52:32 · 11650 阅读 · 1 评论 -
Python-浅拷贝、深拷贝
..原创 2021-03-21 22:11:54 · 11052 阅读 · 1 评论 -
OJ-leetcode-53. 最大子序和(简单动态规划)
目录题目思路(错)思路代码结果题目给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例 1:输入:nums = [-2,1,-3,4,-1,2,1,-5,4]输出:6解释:连续子数组 [4,-1,2,1] 的和最大,为 6 。示例 2:输入:nums = [1]输出:1提示:1 <= nums.length <= 3 * 104 -105 <= nums[i] <= 10原创 2021-03-09 20:46:56 · 10325 阅读 · 4 评论 -
Python-并查集详解与实现
简介数据结构树的双亲表示法,即一个列表fa采用经典的帮派打架来讲解:帮派->树。老大->根节点。初始化(帮派林立)刚开始,江湖上有很多帮派,帮派就一个人,“张三派”、“李四派”等,谁也不服谁。初始化,绿色代表根节点 def __init__(self, n, hi=False): self.fa = [i for i in range(n)]查询与合并(帮派争斗)江湖开始了不断的厮杀。。。合并2->1:1和2打了.原创 2021-01-19 08:58:47 · 10171 阅读 · 0 评论 -
Python-简单小说爬虫(以《天官赐福》为例)
目录代码视频参考代码"""--coding:utf-8--@File: tianguan.py@Author:frank yu@DateTime: 2021.01.10 20:06@Contact: frankyu112058@gmail.com@Description:"""import randomimport timeimport requestsfrom bs4 import BeautifulSouptianguan = 'https://www.原创 2021-01-10 22:29:51 · 12996 阅读 · 4 评论 -
Python-二分查找算法bisect模块
目录简介方法二分查找目标值区间左侧目标值区间右侧插入【可不学】目标值区间左侧目标值区间左侧参考简介方法二分查找目标值区间左侧bisect_left(a, x, lo=0, hi=len(a))在 a 中找到 x 合适的插入点以维持有序。参数 lo 和 hi 可以被用于确定需要考虑的子集;默认情况下整个列表都会被使用。如果 x 已经在 a 里存在,那么插入点会在已存在元素之前(也就是左边)。如果 a 是列表(list)的话,返回值是可以被放在 lis原创 2021-01-03 19:09:37 · 7761 阅读 · 1 评论 -
Python-堆的实现与heapq(最小堆库函数)
heapq简介堆是一个二叉树,它的每个父节点的值都只会小于或大于所有孩子节点(的值)。它使用了数组来实现:从零开始计数,对于所有的 k ,都有 heap[k] <= heap[2*k+1] 和 heap[k] <= heap[2*k+2]。 为了便于比较,不存在的元素被认为是无限大。 堆最有趣的特性在于最小的元素总是在根结点:heap[0]。创建heapq.heapify(x)将list x 转换成堆,原地,线性时间内。>>> from heapq i原创 2020-12-31 17:26:52 · 8563 阅读 · 0 评论 -
剑指 Offer 58 - I. 翻转单词顺序(简单字符串)
输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。为简单起见,标点符号和普通字母一样处理。例如输入字符串"I am a student. ",则输出"student. a am I"。示例 1:输入: "the sky is blue"输出: "blue is sky the"示例 2:输入: " hello world! "输出: "world! hello"解释: 输入字符串可以在前面或者后面包含多余的空格,但是反转后的字符不能包括。示例 3:输入:...原创 2020-12-27 14:48:29 · 6756 阅读 · 0 评论 -
python-二叉树的实现(oj向)
前言本文用python实现了二叉树,由于博主是为了刷leetcode,熟悉python如何去实现数据结构与算法,所以采用的Solution方式,函数没有当做二叉树类的方法。结构class TreeNode: def __init__(self, x): self.val = x self.left = None self.right = None所用的树基本操作函数创建 def create(self, ge.原创 2020-12-24 17:30:26 · 5282 阅读 · 0 评论 -
Python-序列化与反序列化
简介引言-jsonpickle可以被打包/解包的对象下列类型可以被打包: None、True 和 False 整数、浮点数、复数 str、byte、bytearray 只包含可打包对象的集合,包括 tuple、list、set 和 dict 定义在模块顶层的函数(使用 def 定义,lambda 函数则不可以) 定义在模块顶层的内置函数 定义在模块顶层的类 某些类实例,这些类的 __dict__ 属性值或 __get原创 2020-12-20 20:28:03 · 2843 阅读 · 1 评论 -
OJ-leetcode找不同(简单统计)
题目给定两个字符串 s 和 t,它们只包含小写字母。字符串t由字符串s随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。示例 1:输入:s = "abcd", t = "abcde"输出:"e"解释:'e' 是那个被添加的字母。示例 2:输入:s = "", t = "y"输出:"y"示例 3:输入:s = "a", t = "aa"输出:"a"示例 4:输入:s = "ae", t = "aea"输出:"a...原创 2020-12-20 20:19:13 · 1200 阅读 · 2 评论 -
Python-容器之计数字典Counter
目录介绍创建操作符求并集 +求交集 &求差集 -方法返回元素迭代器返回高频元素视图求差集函数转列表长度参考介绍Counter是dict的子类,用于计数可哈希对象。它是一个集合,元素像字典键(key)一样存储,它们的计数存储为值。计数可以是任何整数值,包括0和负数。创建Counter([iterable-or-mapping]),可迭代的或映射的可哈希对象都可以>>> from collections原创 2020-12-20 20:00:46 · 1425 阅读 · 1 评论 -
python-集合类型set与frozenset(操作符、方法、内置函数)
简介set 对象是由具有唯一性的可哈希对象所组成的无序多项集。 常见的用途包括成员检测、从序列中去除重复项以及数学中的集合类计算,例如交集、并集、差集与对称差集等等。创建set([iterable])如果有参数,返回可迭代对象形成的已去重集合。>>> s = set([1,2,3,4])>>> s{1, 2, 3, 4}不支持索引、切片等。操作符成员操作符(in、not in)>>> 1 in sTrue原创 2020-12-15 21:16:25 · 998 阅读 · 0 评论 -
python-容器之双端队列deque
介绍双端队列,即两端都可以进出的队列。方法最大尺寸添加从右侧append(x)添加 x 到右端。从左侧appendleft(x)添加 x 到左端。从右侧扩展extend(iterable)扩展deque的右侧,通过添加iterable参数中的元素。从左侧扩展extendleft(iterable)扩展deque的左侧,通过添加iterable参数中的元素。注意,左添加时,在结果中iterable参数中的顺序将被反过来添加。任意位置插入在原创 2020-12-13 21:29:40 · 1027 阅读 · 1 评论 -
剑指 Offer 22. 链表中倒数第k个节点(简单快慢指针)
题目输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。示例:给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-biao-zhon原创 2020-12-11 11:09:20 · 510 阅读 · 0 评论 -
python-单链表实现(oj向)
目录前言基本操作函数添加尾插随意位置插长度查找返回第一个统计个数删除按索引按值清空显示高级操作函数返回倒数第k个节点(快慢指针)全部代码前言本文用python实现了单链表,由于博主是为了刷leetcode,熟悉python如何去实现数据结构与算法,所以采用的Solution方式,函数没有当做单链表类的方法。单链表实现的是带头结点的单链表,头结点内的数据为单链表的长度。结构class ListNode: def原创 2020-12-11 11:07:44 · 974 阅读 · 1 评论 -
Python-二进制模块struct
简介此模块可以此模块可以执行 Python 值和以 Python bytes对象表示的C结构之间的转换,使用格式字符串作为 C 结构布局的精简描述以及与 Python 值的双向转换。字节顺序、大小和对齐方式默认情况下,C类型以机器的本机格式和字节顺序表示,并在必要时通过跳过填充字节进行正确对齐,或者,根据下表,格式字符串的第一个字符可用于指示打包数据的字节顺序,大小和对齐方式: 字符 字节顺序 大小 对齐方式原创 2020-12-08 09:58:11 · 602 阅读 · 0 评论 -
剑指 Offer 48. 最长不含重复字符的子字符串(中等滑动窗口)
滑动窗口class Solution: def lengthOfLongestSubstring(self, s: str) -> int: # dic 保存 dic, res, left, n = {}, 0, -1, len(s) for right in range(n): if s[right] in dic: left = max(dic[s[right]], left) #原创 2020-12-03 19:49:43 · 499 阅读 · 0 评论 -
OJ-leetcode-374. 猜数字大小(简单二分查找)
目录题目思路代码更优题解题目猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0): -1:我选出的数字比你猜的数字小 pick < num 1:我选出的数字比你猜的数字大 pick &...原创 2020-12-02 21:12:36 · 615 阅读 · 0 评论 -
剑指 Offer 04. 二维数组中的查找(中等数组)
目录题目思路1代码思路2代码提升笔记题目在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [...原创 2020-11-27 20:01:32 · 516 阅读 · 0 评论 -
剑指 Offer 03. 数组中重复的数字(简单数组)
目录题目思路1代码思路2代码提升笔记题目找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2 或 3限制:2 <= n <= 100000来源:力扣(LeetCode)链接:https://leetcode-cn.co原创 2020-11-26 21:26:53 · 605 阅读 · 0 评论 -
Python-错误和异常总结(内置异常、assert、抛出异常、异常捕获与处理)
简介如果你编写过C++程序,相信你应该有过被“烫烫烫”、“屯屯屯”支配的恐惧。作为程序员,我们每天就是在写代码bug,然后改bug。通过本文你可以看懂自己程序发生的错误或异常,如何自己定义异常,如何处理/避免异常。你需要注意是什么引起了某个异常,在编程时进行避免或处理。语法错误-SyntaxError语法错误又称解析错误,语法错误导致不能被解释器解释或编译器无法编译,这些错误必须在程序执行前纠正。>>> while True File "<stdin>",.原创 2020-10-29 21:11:56 · 6610 阅读 · 2 评论 -
Python-字节总结(bytes、bytearray、方法、内置函数、模块)
bytesbytes:不可变的字节序列bytearraybytearray:可变的字节数组memoryview编码与解码 编码:就是,你用几个字节去理解内存中的数字。 解码:就是,将内存中的字节数组按照什么字符集解码成对应的字符 字符串按照不同的字符集编码encode返回字节序列bytes encode(encoding=‘utf-8’,errors=‘strict’)->bytes 注意encode默认转换时的默认编码集是utf-8 字节序列按照原创 2020-10-26 17:25:14 · 9408 阅读 · 0 评论 -
Python-迭代器与生成器(yield、内置函数、模块)
迭代器__iter__()__next__()StopIterationiter()next()内置函数生成器yield内置函数next()enumerate()any()all()模块itertools原创 2020-10-24 16:07:31 · 589 阅读 · 0 评论 -
Python-关键字总结与使用
所有关键字>>> import keyword>>> print(keyword.kwlist)['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'impor原创 2020-10-24 16:12:26 · 982 阅读 · 1 评论 -
Python-命名空间和变量作用域详解(global、nonlocal)
目录命名空间作用域全局变量与局部变量就近原则只读问题关键字全部代码总结命名空间命名空间(namespace )是一个从名字到对象的映射,当前,大部分命名空间都由 Python 字典实现。同命名空间中的名称之间绝对没有关系,例如,两个不同的模块都可以定义一个 maximize 函数而不会产生混淆,当然,模块的用户必须在其前面加上模块名称。类似一个文件夹内不能有重复名称的文件,但是,不同的文件夹内可以有相同名称的文件。在不同时刻创建的命名空间拥有不同的生存期。包含原创 2020-10-23 19:06:42 · 876 阅读 · 0 评论