![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
python
文章平均质量分 76
空巢青年_rui
好记性不如烂键盘
展开
-
Chat-TTS:windows本地部署实践【有手就行】
最近Chat-TTS模型很火,生成的语音以假乱真,几乎听不出AI的味道。我自己在本地部署玩了一下,记录一下其中遇到的问题。原创 2024-06-10 21:22:35 · 3310 阅读 · 1 评论 -
HJSON:可注释、更简洁易用的JSON用户接口及其在Python中的使用
JSON是现代常用的一种数据储存和表示格式,具有良好的阅读和编写体验。在Python语言中可以和字典、列表等数据格式完美兼容。此外,JSON的另一个作用是作为配置文件使用,不过当使用json作为配置文件时,其有一个问题,就是json中不允许使用注释等额外的不符合json语法格式的内容(当然我们可以选择其他的如ini, yaml等格式来使用)。HJSON是一种可以添加注释,而且更加简洁的JSON表示,支持在.NET、JAVA、Python、GO等语言中使用。原创 2023-04-02 00:17:03 · 1676 阅读 · 1 评论 -
Python中如何使用__slots__限制对象属性来节约内存
__slots__是python中类的一个类属性,它允许我们明确声明类数据对象的成员有哪些,同时取消创建 对象默认自带的 和 (除非在中也指定要带着这两个属性,或者在父类中提供了他们)。这对于节约 占用的空间来说意义重大,同时属性的查找速度也可以得到显著的提升。 是一个类变量,我们可以通过使用实例变量名称的字符串、可迭代对象或者字符串序列来为其赋值。推荐使用变量名称的字符串序列,最好使用元组(节约空间)。为声明的变量保留空间,并防止为每个实例自动创建 和 。...原创 2022-08-13 21:17:22 · 429 阅读 · 0 评论 -
FastAPI 初级教程--用户指南 (持续更新中……)
在前面列举了FastAPI的相关特性和概念以及Python的类型提示后,我们正式进入FastAPI Web开发框架的学习。本篇文章将作为后续文章的目录使用,相关内容会持续更新(但愿如此😂)本部分是FastAPI的基础教程,涵盖了FastAPI使用的各种HTTP概念和特性。在阅读完成后,你基本可以完成一个Web项目的完整开发。之后你可以阅读进阶用户指南,了解更高层出的其他概念,并扩展FastAPI应用。注意: 在使用本教程的过程中,你可能需要使用FastAPI的所有依赖,可以通过 命令安装。原创 2022-07-10 20:20:50 · 540 阅读 · 1 评论 -
Python中的类型提示(Type Hints)及其在FastAPI中的应用
这一章我们来了解Python的类型提示的用法和其在FastAPI、Pydantic中的使用。python在 3.6 版本加入了对 类型提示 的支持,并在之后的版本中不断对其进行了优化。类型提示 type hints 是一种新的语法,用来声明一个变量的类型。通过声明变量的类型,编辑器和一些工具能够为用户提供更好的支持。本章内容知识对于Python类型提示的快速入门/复习,仅涵盖与FastAPI一起使用的部分功能。FastAPI代码库实现了100% 的类型提示,整个FastAPI都基于这些类型提示构建,他带了许原创 2022-07-09 13:21:32 · 910 阅读 · 0 评论 -
最快的Pythonweb框架之一:FastAPI 初探
学习FastAPI 异步 web框架,记录一下,当做笔记。官网:https://fastapi.tiangolo.com/中文官网:https://fastapi.tiangolo.com/zh/项目地址:https://github.com/tiangolo/fastapiFastAPI是一个用于构建API的现代、快速(高性能)的web框架,使用Python3.6+ 版本,并基于Python标准库(typing库)提供的类型提示(type hints)。项目遵循 MIT 许可协议。其关键特........原创 2022-07-08 23:49:22 · 2719 阅读 · 0 评论 -
Python [sortedcontainers]有序容器库使用不完全指南
sortedcontainers是一个纯Python开发的排序容器库。这里的容器指的是字典、列表、集合这样的数据结构,不是docer之类的容器技术。简单的说就是,使用该库中类创建的列表、字典或集合,都是自动排序的,同时这些类还提供了像这样的用于有序数据结构的常用算法。该库虽然使用纯Python开发,但却号称拥有媲美甚至超越 C扩展 的速度。Python标准库提供的容器已经非常好用了,直到……你需要一个真正的排序列表、排序字典或排序集合。sortedcontainers可以提供自带排序功能的上述容器,且排序原创 2022-07-05 23:37:14 · 3173 阅读 · 1 评论 -
python高阶函数库 functools使用指南,带你认识缓存、键函数、描述器、富比较方法、单派发和泛型函数
functools 库用于提供高阶函数:作用于或返回其他函数的函数。一般,任何可调用对象都可以作为此模块的函数处理。其中会涉及部分新的概念,包括:。缓存是个 key : value 数据结构或数据库,用来加速用户访问的速度,当用户调用函数时,如果传入函数的参数与之前数据库中记录的 key 相同,则会直接返回库中存储的 value,而不必再次执行函数进行运算;如果传入的参数之前没存在库中,则执行函数,并将结果也存入库中。不过要注意,调用的参数必须严格相同才会触发缓存查找,如3和3.0会被看做两个不同的ke原创 2022-07-03 23:52:26 · 2848 阅读 · 0 评论 -
itertools库常用高效迭代器一览表,帮你快速实现数据的排列组合【python】
itertools提供一系列的快速、内存高效的iterator,这些迭代器本身或者组合都非常有用。如可以快速获得列表元素的排列、组合结果等。这些内置工具同时也能很好地与 模块中的高效函数配合使用。注意:itertools中方法返回(yield)的都是生成器对象,每次调用值处理一个元素,所以是内存高效的。例如,我们可以将两个向量的点积映射到乘法运算符: 。itertools提供了基本的常用的迭代器,如果感觉不够用,还可以安装 库使用其他迭代器:https://github.com/more-iter原创 2022-07-02 18:25:17 · 611 阅读 · 0 评论 -
map、reduce、filter等常与lambda配合使用的函数【Python】
lambda关键字可以用于创建小巧的匿名函数。它由参数和一个单独 expression 构成,表达式会在调用时被求值。创建 lambda 函数的句法为 。lambda经常与内置的或functools的某些函数搭配使用:map(function, iterable, …):将function函数作用于iterable中的每个元素上,并输出其结果的迭代器。如果传入了多个iterable参数,那么要求function对应要有相同数量的入参,以对多个iterable同时执行操作。如果传入的多个可迭代对象长度原创 2022-07-01 22:39:00 · 215 阅读 · 0 评论 -
Python循环中被遗忘的else选项
本文介绍Python的 和 语法,Python 中最少被使用和经常被误解的特性之一。Python中的循环和循环都有一个可选的 套件(类似于语句和语句),如果循环正常结束,那么就会执行该else套件。换句话说,如果我们不以任何非自然的方式(、或抛出异常)退出循环, 套件就会被执行。即,没有 语句,没有 语句,或者在循环中没有。看一个简...原创 2022-06-27 10:34:25 · 120 阅读 · 0 评论 -
Python timeit库测试代码片段运行时间
timeit 是一个用来测量小代码片段执行时间的工具库,有命令行和函数调用两种方法可供使用。可以直接查看文档最后的示例部分快速了解其用法。注意:需要注意的是,在命令行,传给timeit 的 (即要运行的测试代码)都要是字符串格式的,而不是函数引用或Python语句。在函数中,除了字符串,可以传入一个可调用对象。命令行方式:如果是在windows下使用命令行执行语句,切记最外层需要使用......原创 2022-06-25 10:27:48 · 773 阅读 · 0 评论 -
Python 从字典构造多叉树
构造一个树节点类,每个节点都有一个int类型的值(val),和0个或多个子节点childs。给定一个字典,其中字典的key为当前节点的val,value对应列表对应当前节点的childs的val值。请将该字典的构造为多叉树结构,使用root表示数的根节点,并打印每个节点的值及其子节点的值。(这里确保OrderDict字典的第一个key为树的根节点)。运行结果:对于第二种输出格式,其关系为:......原创 2022-06-23 18:53:48 · 2130 阅读 · 0 评论 -
使用PIL为图片添加水印[python]
最近遇到有需要使用证件的情况,但是直接发送证件照片可能存在安全风险,所以考虑在手机上找个软件给证件添加水印(满屏水印那种,不是单个水印)。但是在应用商店下了几个软件,又可以使用的但是非VIP用户有次数限制,很是烦人。所有决定自己用Python的PIL库搞一个小脚本处理它,同时证件照片在自己本地处理也比较放心,不用担心照片被app上传到服务器的风险。需要安装依赖:使用方法可以通过命令查看帮助文档,其中是脚本的名称,可以按自己喜好更换。在windows环境下测试使用,字体文件可以从windows字体库中原创 2022-06-18 00:03:50 · 1768 阅读 · 0 评论 -
删除字符获取字符串中的最大整数 [python]
有一个由数字组成的字符串num1,我们从其中删掉n个字符得到一个新的数字num2,找到num2的最小值。保证num1 有‘0-9’组成, n 小于 num1 的长度,‘012’等情况算作合法解(整数12)。从字符串中删除n个字符,可以看做在长度为 l 的num1中按顺序挑选(l-n)个字符组成最小的数字。首先想到的就是num2的第一位数字要尽量小,同时,因为不能改变num1中字符的顺序,所以还要保证取出第一位后,后面的数字可以满足 (l-n)- 1 的长度。之后的数字需要在第一位数字之后的数字中再按上原创 2022-06-16 15:59:50 · 375 阅读 · 0 评论 -
ASCII字符绘图网站推荐及使用Python绘制ASCII字符画
文字显示为ASCII字符画:图片显示为ASCII字符画:https://tool.lu/asciipainting/category.html 和上一个网站类似提供各种ASCII 字符画http://life.chacuo.net/convertphoto2char 还不错https://www.qtool.net/imgasciivscode插件:koroFileHeader: https://github.com/OBKoro1/koro1FileHeader用于一键生成文件头部注释原创 2022-06-08 18:01:19 · 4502 阅读 · 0 评论 -
PowerShell关闭conda自动激活Python(base)虚拟环境
PowerShell关闭自动激活anaconda的base Python虚拟环境原创 2022-06-08 17:35:07 · 5017 阅读 · 0 评论 -
MessagePack简介与在Python中使用msgpack
MessagePack数据交换格式简介,如何在Python中使用msgpack库打包和解包MessagePack数据。原创 2022-06-07 19:49:06 · 5279 阅读 · 0 评论 -
Python中*和**在函数中的用法
python中函数定义和调用时 * 和 ** 的特殊作用和用法,以及如何使用 * 和 / 特殊参数为python分割函数的参数列表,规定其传参行为。原创 2022-05-31 13:57:46 · 331 阅读 · 0 评论 -
Python中下划线 _ 的最全用法详解
详解python中下划线 _ 的各种语义和用法原创 2022-05-30 23:29:34 · 5286 阅读 · 0 评论 -
算法中的滑动窗口思想及python实现
本文是对 https://www.bilibili.com/video/BV1V44y1s7zJ/ 视频内容的记录,推荐观看原视频加深理解。滑动窗口问题的特征:滑动窗口指在数组上通过双指针同向移动而解决的一类问题。两个指针之间的部分可以看做为窗口。滑动窗口算法一般用来寻找:满足某一条件的(计算结果、出现次数、同时包含……)最短的/最长的子数组/子序列/子串(通常是连续的)核心思想:寻找最长窗口使用思路:初始化:左右双指针(L,R)初始化为 0,R向右逐步移动循环:在每次..原创 2022-05-26 23:13:33 · 2601 阅读 · 0 评论 -
二分查找及其python实现--为什么二分查找总是写错?
二分查找及其python实现–为什么二分查找总是写错?本文是对 https://www.bilibili.com/video/BV1d54y1q7k7 视频内容的整理记录,推荐大家观看原视频深入理解二分查找的边界问题。二分查找的本质对于一个有序数组,在查找时我们通常会处理以下4种问题:问题的本质在于对边界的处理和返回值的选择上。从新的角度看问题:一个包含N个元素的数组,假设其前K个元素(0 ~ K-1)为蓝色,后(N-K)个元素(K~N-1)为红色。不过一开始我们并不知道K在哪里,原创 2022-05-26 11:09:01 · 181 阅读 · 0 评论 -
图解堆排序及其Python实现
图解堆排序及其Python实现什么是堆?堆(heap,也称优先队列)是一种数据结构,通常可以看做是一棵完全二叉树的广度优先遍历数组对象。分类:根节点的值总是不小于子节点值的堆称为最大堆、大顶堆或大根堆。根节点的值总是不大于子节点值的堆称为最小堆、小顶堆或小根堆。其满足以下性质:堆总是一棵完全二叉树;堆中的某个节点的值总是不大于或不小于其父节点的值;下标为 i 的节点的父节点下标为 (i-1)// 2 [整数除法]下标为 i 的节点的左孩子下标为 i * 2 + 1下标为原创 2022-05-24 17:29:09 · 567 阅读 · 1 评论 -
手把手教你使用ESP32+MicroPython制作贪吃蛇游戏
在ESP32开发板上使用MicroPython编程实现一个贪吃蛇小游戏,游戏可以在ssd1306 OLED屏幕上游玩,使用四个按钮开关控制蛇的上下左右移动。原创 2022-05-15 12:59:04 · 3640 阅读 · 2 评论 -
使用python模拟实现PID控制算法
使用python模拟实现PID控制算法PID控制算法是工业应用中最广泛算法之一,在闭环系统的控制中,可自动对控制系统进行准确且迅速的校正。P、I、D分别是“比例(proportional)、积分(integral)、微分(derivative)”三个单词的首字母,他们分别对应算法中使用的三个参数。有关于PID算法的详细内容请自行查阅相关资料,参考文章。常用的PID控制算法有位置式和增量式两种形式,下面给出他们的python实现:1. 位置式位置式PID离散公式:u(k)=Kpek+Ki∑i=1原创 2022-05-06 11:08:10 · 15386 阅读 · 16 评论 -
python中metaclass元类用法详解
python中metaclass元类用法详解1. 内置函数type()和isinstance():在介绍metaclass之前,首先要了解一些相关的内置函数:type() 和 isinstance()1.1 type():type()函数的主要功能有两个:查看一个变量(对象)的类型创建一个类(class)另外type(这里不是指type()函数)本身也是一个类,这在后面进行介绍。查看一个对象类型:class ClassA: name = 'type test'a = C原创 2022-04-17 15:33:23 · 1764 阅读 · 0 评论 -
python中的__new__, __init__和__call__函数用法详解
python中的__new__, __init__和__call__函数用法详解1. 开门见山首先要对这三个函数有一个直观感性的认识:__new__负责类中对象的创建,而__init__负责对创建的对象进行初始化;__new__是一个类方法,而__init__和__call__是对象方法;__call__用于声明这个类的对象时可调用的(callable)代码示例:class ClassA: def __new__(cls): print('ClassA.__new_原创 2022-04-17 13:21:55 · 1213 阅读 · 0 评论 -
Flask-Caching使用redis缓存后端加速页面重载
需求说明使用Flask-Caching扩展为Flask web程序页面做缓存,用以缩短同一页面的加载时间。缓存后端使用Redis服务。当使用缓存时,用户第一次访问某一页面服务器会执行视图函数中的数据库查询、函数计算、模板渲染等工作,并将渲染后的页面数据以键值对的形式存储在Redis中,对于视图函数默认的键格式为view/<request.path>。当用户再次访问同一个页面时,服务器将会直接将Redis中保存的页面数据值返回给客户端,而不必再次执行视图函数中的代码,从而缩短页面加载时间,提升原创 2022-04-12 11:18:20 · 2130 阅读 · 0 评论 -
Flask-socketio服务器端与js客户端socket.io版本不匹配问题解决
问题描述在按照 李辉 老师的《Flask Web开发实战》练习项目时,在网络聊天室项目使用socket.io进行WebSocket通信时,发现客户端和服务器端无法进行消息发送,服务器端的GET前请求一直报错:"GET /socket.io/?EIO=3&transport=polling&t=N_l1L5D HTTP/1.1" 400 -。一直往上翻日志发现在服务器启动时有提示:The client is using an unsupported version of the Socket原创 2022-04-04 00:10:18 · 8286 阅读 · 4 评论 -
cannot import name ‘TimedJSONWebSignatureSerializer‘ from ‘itsdangerous‘问题解决
问题描述在Flask中生成用于验证的token时,从itsdangerous(2.1.2)中调用TimedJSONWebSignatureSerializer时发现报错:cannot import name 'TimedJSONWebSignatureSerializer' from 'itsdangerous'跳转到代码中确实没有找到TimedJSONWebSignatureSerializer类。解决思路查看itsdangerous文档,发现该库在2.0.0版本之后就将TimedJSONWebS原创 2022-03-28 00:01:47 · 13483 阅读 · 3 评论 -
解数独(python)dfs、回溯
问题描述编写一个程序,通过填充空格来解决数独问题。数独的解法需 遵循如下规则:数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。(请参考示例图)数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例:问题:输入:board = [["5","3",".",".","7",".",".",".","."],["6",".",".","1","9","5",".",".","."],[".","9"原创 2021-12-24 12:12:51 · 394 阅读 · 0 评论 -
在python中使用‘# %%‘快速进入ipython交互编辑模式
问题描述今天在csdn的每日一练中发现代码中包含# %%字符,将代码赋值到vscode中后,# %% 后的代码会变为一个cell单独运行,即ipython或jupyter中的cell。不过看上去比完整的jupyter cell略显简陋。点击运行的话,vscode会启动jupyter服务来显示运行结果。也可以通过 shift + 回车运行当前cell。测试发现,在vscode和PyCharm中通过输入# %%都能够快速进入ipython的交互编辑模式。使用最后通过查找vscode的官方文档发现了该命原创 2021-12-17 11:21:17 · 4369 阅读 · 0 评论 -
vscode编辑python时跳转到.pyi而不是源码的问题
解决vscode编辑python时点击方法进行跳转,跳到.pyi 文件而不是 .py 源码的问题原创 2021-12-12 16:52:03 · 3265 阅读 · 3 评论 -
python中使用 list() 和 [] 处理string的差异
python中使用 list() 和 [] 处理string的差异在python中列表类型为 list,一般可以通过 list() 方法做类型转换,或者通过使用 [] 来创建雷彪,但是这两种方法在将字符串类型转换为列表时有以下不同:使用list() 处理stringa = '123'list(a)Out[4]: ['1', '2', '3']list()方法通过迭代将原字符串中的每个元素作为 list 中一个单独的子元素。使用 [] 处理stringa = '123'[a]Out[5]原创 2021-12-06 23:22:48 · 270 阅读 · 0 评论 -
windows下python第三方库编译安装失败问题处理
windows下python第三方库编译安装失败问题处理问题描述Python之所以强大,一个很大的原因要归功于其强大、丰富的第三方功能库,不过有些功能库在windows环境下使用pip命令工具进行安装时,会出现编译失败报错的build error情况或者是需要安装C/C++编译工具的环境问题。这主要是因为有些第三方库在安装时,从pypi源获取的是库的源代码tar包,下载后要在本机使用C/C++ 环境进行编译安装。如果自己的电脑没有安装C/C++工具,或者配置有问题就可能导致以上情况出现。问题解决原创 2021-12-01 16:31:33 · 1604 阅读 · 0 评论