
Python
文章平均质量分 69
程序员贝塔
这个作者很懒,什么都没留下…
展开
-
7.2K star!一个完全免费,可以本地部署的 AI 搜索聚合器。新手可尝试
这个项目是完全免费的,并且可以本地私有部署,无需 GPU。系统会根据用户提出的问题,到多个搜索引擎去搜索,然后把搜索结果发给 LLM,由 LLM 来生成最终答案。完全免费完全本地化,且私有部署无需 LLM 硬件(GPU)即可运行使用免费的 ChatGPT3.5 / Qwen / Kimi / ShipuAI(GLM) API(无需 API 密钥)支持定制 LLM,比如 ollama使用 Docker Compose 快速部署Web 页面,并且移动端友好,允许从任何设备轻松访问。原创 2024-04-23 14:04:57 · 1393 阅读 · 0 评论 -
9K star!利用 AI 大模型,一键生成高清短视频。效果还可以
只需提供一个主题或关键词,就可以全自动生成视频文案、素材、字幕、还有背景音乐,然后合成一个高清的短视频。完整的MVC 架构,代码结构清晰,易于维护,支持API和Web 界面支持视频文案AI 自动生成,也可以自定义文案支持多种高清视频尺寸竖屏 9:16,1080x1920横屏 16:9,1920x1080支持批量视频生成,可以一次生成多个视频,然后选择一个最满意的支持视频片段时长设置,方便调节素材切换频率支持中文和英文视频文案支持多种语音合成支持字幕生成,可以调整字体位置颜色大小。原创 2024-04-16 16:22:08 · 919 阅读 · 0 评论 -
Python 中删除列表元素的三种方法
列表基本上是 Python 中最常用的数据结构之一了,并且删除操作也是经常使用的。那到底有哪些方法可以删除列表中的元素呢?这篇文章就来总结一下。一共有三种方法,分别是 remove,pop 和 del,下面来详细说明。removeL.remove(value) -> None – remove first occurrence of value. Raises ValueError if the value is not present.remove 是从列表中删除指定的元素,参数是 v原创 2022-04-20 23:13:33 · 13018 阅读 · 1 评论 -
Python 报错 ValueError list.remove(x) x not in list 解决办法
平时开发 Python 代码过程中,经常会遇到这个报错:ValueError: list.remove(x): x not in list错误提示信息也很明确,就是移除的元素不在列表之中。比如:>>> lst = [1, 2, 3]>>> lst.remove(4)Traceback (most recent call last): File "<stdin>", line 1, in <module>ValueError: l原创 2022-04-13 21:54:18 · 18934 阅读 · 4 评论 -
Python 中的鸭子类型和猴子补丁
原文链接: Python 中的鸭子类型和猴子补丁大家好,我是老王。Python 开发者可能都听说过鸭子类型和猴子补丁这两个词,即使没听过,也大概率写过相关的代码,只不过并不了解其背后的技术要点是这两个词而已。我最近在面试候选人的时候,也会问这两个概念,很多人答的也并不是很好。但是当我向他们解释完之后,普遍都会恍然大悟:“哦,是这个啊,我用过”。所以,我决定来写一篇文章,探讨一下这两个技术。鸭子类型引用维基百科中的一段解释:鸭子类型(duck typing)在程序设计中是动态类型的一种风格。在原创 2022-04-11 23:32:28 · 208 阅读 · 0 评论 -
Python 的排序方法 sort 和 sorted 的区别
使用 sort() 或内建函数 sorted() 对列表进行排序。它们之间的区别有两点:sort() 方法是对原列表进行操作,而 sorted() 方法会返回一个新列表,不是在原来的基础上进行操作。sort() 是应用在列表上的方法,而 sorted() 可以对所有可迭代的对象进行排序操作。# sort()>>> a = [1, 2, 3, 4, 2, 3]>>> a.sort()>>> a[1, 2, 2, 3, 3, 4]>原创 2022-03-24 22:46:44 · 608 阅读 · 0 评论 -
我写的 Python 代码,同事都说好
原文链接: 我写的 Python 代码,同事都说好人生苦短,我用 Python。程序员的追求就是不写代码,早日财务自由。不对,一不小心把实话说出来了,应该是将代码写得简洁,优雅。Python 程序员的追求则是 Pythonic,正好在 Python 这门语言中,「隐藏」了特别多方法,可以使代码变得简洁,优雅,与众不同。我在这里总结了一些常用操作,特别是关于列表和字典,分享给大家。第一个字母大写这个方法有点意思,无意中发现的。>>> s = "programming is aw原创 2022-03-23 21:23:34 · 1540 阅读 · 0 评论 -
Python 递归函数返回值为 None 的解决办法
在使用 Python 开发的过程中,避免不了会用到递归函数。但递归函数的返回值有时会出现意想不到的情况。下面来举一个例子:>>> def fun(i):... i += 1... if i < 5:... fun(i)... else:... return i...>>> r = fun(0)>>> print(r)比如上面这段代码,乍一看没什么问题,但返回值并不是我们原创 2022-03-15 22:23:03 · 7214 阅读 · 1 评论 -
推荐 5 个 yyds 的开源 Python Web 框架
提到 Python 的 Web 框架,第一反应就是老三样,Django,Flask 和 Tornado。如果按流行度来排名的话,应该也是这个顺序。在 2016 年,发布了一款 Web 框架,叫 Sanic,表现还不错,应该算是后起之秀。Django项目地址: https://github.com/django/djangoPython 中最流行的 Web 框架,功能非常全面,像安全认证,URL Routing,模板引擎,ORM,甚至 Admin 管理后台,全部包括。Flask项目地址: htt原创 2022-03-10 23:05:34 · 3500 阅读 · 0 评论 -
Python 获取字典中的第一个键
提供两种方法:使用 list将字典的 key 转换成列表,然后取第一个元素 [0]。如果想要最后一个 key 的话,就取最后一个元素 [-1]。>>> my_dict = {'a': 2, 'b': 1, 'c': 6, 'd': 11}>>> print(list(my_dict.keys())[0])a>>>>>> print(list(my_dict.keys())[-1])d使用 for循环取出第一个 ke原创 2022-03-09 22:22:19 · 31775 阅读 · 1 评论 -
Python 学习路线(2022)
原文链接: Python 学习路线(2022)前几天整理了一份 Go 学习路线(2022),广受好评。那么趁火打劫,不是,是趁热打铁,又整理了一份 Python 学习路线。内容依然是从入门到进阶,既有教程,也有经典书籍推荐,还有实战开源项目。Python 的发展方向还是挺多的,比如服务端开发,爬虫,数据分析,机器学习等,本文推荐的内容全部是服务端开发,Web 开发方向。主要分为以下几个部分:文档教程书籍推荐Web 开发开源项目实用工具技术社区和博客文档教程Python 官方原创 2022-03-08 22:17:54 · 5181 阅读 · 2 评论 -
python 编辑器提示 do not use bare except
在捕获异常时,应该尽可能指定特定的异常,而不是只使用 except 语句。比如说,except 语句会捕获 KeyboardInterrupt 和 SystemExit 异常,但 KeyboardInterrupt 可能是我们通过 Ctrl + C 主动触发的,显然是不希望被捕获的。这样做会影响我们对异常的判断。如果实在不知道是什么异常,至少要这样使用:except Exception。再举一个例子:try: user = User.objects.get(pk=user_id)原创 2022-03-07 23:10:35 · 9522 阅读 · 0 评论 -
Python 中 base64 编码与解码
base64 是经常使用的一种加密方式,在 Python 中有专门的库支持。本文主要介绍在 Python2 和 Python3 中的使用区别:在 Python2 环境:Python 2.7.16 (default, Mar 25 2021, 03:11:28)[GCC 4.2.1 Compatible Apple LLVM 11.0.3 (clang-1103.0.29.20) (-macos10.15-objc- on darwinType "help", "copyright", "credi原创 2022-03-01 12:56:40 · 15611 阅读 · 0 评论 -
一个关于 += 的谜题
原文链接: 一个关于 += 的谜题今天在看书过程中发现了一个问题,还挺有意思的,分享给大家。下面两个 Python 表达式会产生什么结果?t = (1, 2, [3, 4])t[2] += [5, 6]给四个备选答案:t 变成 (1, 2, [3, 4, 5, 6])。因为 tuple 不支持对它的元素赋值,所以会抛出 TypeError 异常。以上两个都不是。以上两个都是对的。当时看到这个问题,第一反应就是选 2。因为 tuple 是不可变对象,不支持对它的元素赋值,会报错。但原创 2022-02-28 12:27:38 · 1201 阅读 · 0 评论 -
Python 高手都这样使用字典,这些高效方法你知道吗?|pythonic 小技巧
字典(dict)对象是 Python 最常用的数据结构之一。社区曾有人开玩笑地说:「Python 企图用字典装载整个世界。」可见其有多重要,不用多说,我平时用的也很多,索性总结一下,把一些常用的方法写下来,分享给大家。一、字典创建# 1、创建空字典a = {}b = dict()# 2、有初始值,从输入的便利程度来说,我更喜欢第二种a = {'a': 1, 'b': 2, 'c': 3}b = dict(a=1, b=2, c=3)# 3、key 来自一个列表,而 value 相同,原创 2021-03-23 14:25:31 · 228 阅读 · 0 评论 -
像这样操作 Python 列表,能让你的代码更优雅 | pythonic 小技巧
像这样操作 Python 列表,能让你的代码更优雅 | pythonic 小技巧写 Python 代码,列表的出镜率是相当高的,伴随列表一起出现的往往就是一大堆 for 循环,这样的代码多了看起来非常不简洁。作为一名 Python 程序员,怎么能忍受呢?那有没有什么好办法呢?除了列表表达式之外,其实还有一些小技巧来操作列表,可以使代码更简洁,更优雅。下面介绍几个常见的使用场景,分享给大家。一、列表合并第一种方式:循环。>>> a = [1, 2, 3]>>>原创 2021-03-15 21:59:37 · 261 阅读 · 2 评论 -
避坑指南,Elasticsearch 分页查询的两个问题,你一定要知道
Elasticsearch 分页查询有个特点,如果你写一个这样的查询语句:{ "from" : 10, "size" : 10, "query" : {}}Elasticsearch 会查询出前 20 条数据,然后截断前 10 条,只返回 10-20 的数据。这样做带来的副作用很明显,数据量大的话,越到后面查询越慢。所以针对大数据量的查询,要使用 scroll。这种方式相当于建立了一个游标,标记当前的读取位置,保证下一次查询快速取出数据。但这两种方式都还有一个小坑需要注意,下面原创 2020-12-27 15:37:26 · 1142 阅读 · 1 评论 -
使用 Docker 部署 canal 服务,实现 MySQL 数据库 binlog 日志解析
canal 是阿里巴巴开源的一个项目,主要用途是基于 MySQL 数据库 binlog 日志解析,提供增量数据订阅和消费。基于日志增量订阅和消费的业务包括:数据库镜像数据库实时备份索引构建和实时维护(拆分异构索引、倒排索引等)业务 cache 刷新带业务逻辑的增量数据处理我这边主要在两个场景下使用:一个是将变更数据实时同步到 Elasticsearch 和 Redis。这里先说一下我目前的做法,一方面是全量数据定时同步,由于数据量比较大,同步时间比较长,所以数据也就不够实时。第二个方面原创 2020-12-13 16:48:08 · 946 阅读 · 4 评论 -
求求你了,不要再写循环求两个列表的交集,并集和差集了 | pythonic 小技巧
在 Python 中,求两个列表的交集,并集和差集是经常会遇到的需求,而且也比较简单。最容易想到的就是写循环,对两个列表分别进行循环,然后判断元素是否在另一个列表中,求得最终结果。但这种方法比较 low,没啥技术含量。身为一名 Python 程序员,一定要写够 pythonic 的代码。废话不多说,直接看代码。# list_operate.pydef main(): list_a = [1, 2, 3, 4, 5] list_b = [4, 5, 6, 7, 8] #原创 2020-11-11 23:26:20 · 259 阅读 · 0 评论 -
Python 中 \x00 和空字符串的区别,以及在 Django 中的坑
事情是这样的,我有一个守护进程,不停地从 RabbitMQ 消费数据,然后保存到 MySQL。操作数据库使用的是 Django 的 ORM 语法。最近一段时间,频繁发生一个问题,就是有一类数据,守护进程从后台使用 create 方法,直接入库完全没问题。但是,在页面上,通过表单来修改这条数据,无论如何都无法保存成功,报错信息提示某一个字段不能为空。但是这个字段明明是有值的,很让人费解。仔细分析了代码之后,感觉可能发生问题的只有这一句:serializer = self.get_serializer(d原创 2020-09-21 23:47:06 · 1243 阅读 · 0 评论 -
一个实用的开源项目,可以快速将 Elasticsearch 数据导出到 csv
在实际业务中,数据导出应该算是一个强需求了,很多场景都用得到。如果是 MySQL 的话,则无需多言,支持导出的工具一大堆,根据自己需求选择即可。那有没有对 Elasticsearch 导出支持比较好的工具呢?虽然没有 MySQL 那么多,但肯定是有的。如果部署了 Kibana,那一定是首选,不止导出功能强大,还有一整套可视化功能,很实用。没有 Kibana 的话也别慌,今天就给大家推荐一款命令行导出工具:es2csv。源码地址:https://github.com/taraslayshchuk/e原创 2020-08-22 19:45:08 · 999 阅读 · 0 评论 -
Python 多进程之间共享变量
Python 多线程之间共享变量很简单,直接定义全局 global 变量即可。而多进程之间是相互独立的执行单元,这种方法就不可行了。不过 Python 标准库已经给我们提供了这样的能力,使用起来也很简单。但要分两种情况来看,一种是 Process 多进程,一种是 Pool 进程池的方式。Process 多进程使用 Process 定义的多进程之间共享变量可以直接使用 multiprocessing 下的 Value,Array,Queue 等,如果要共享 list,dict,可以使用强大的 Manag原创 2020-08-02 11:28:04 · 1899 阅读 · 0 评论 -
解决 Django 多进程下,logging 记录日志错乱问题
之前写过一篇文章 Django 中如何优雅的记录日志,本以为代码上线之后,就可以愉快的看日志,通过日志来分析问题了,但现实总是跟想象不同,两个异常现象纷纷挥起大手,啪啪地打在我的脸上。两个异常如下:日志写入错乱;日志并没有按天分割,而且还会丢失。在网上查找一些资料,发现了原因所在:Django logging 是基于 Python logging 模块实现的,logging 模块是线程安全的,但不能保证多进程安全。我的 Django 项目是通过 uwsgi 启的多进程,所以就发生了上述两个.原创 2020-05-18 21:35:45 · 1720 阅读 · 0 评论 -
Python 开发编码规范
技术博客: https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。最近,团队又来了几个小伙伴,经过一段时间磨合之后,发现彼此之间还是比较默契的,但有一个很大的问题是,每个人的编程风格和习惯都不同,导致现在代码看起来非常混乱。所以,有一个统一的开发编码规范还是很重要的。我在网上搜索了一些资料,在 P...原创 2020-02-06 21:39:30 · 204 阅读 · 0 评论 -
Python 实现 ZeroMQ 的三种基本工作模式
技术博客: https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。简介引用官方说法:ZMQ(以下 ZeroMQ 简称 ZMQ)是一个简单好用的传输层,像框架一样的一个 socket library,他使得 Socket 编程更加简单、简洁和性能更高。是一个消息处理队列库,可在多个线程、内核和主机...原创 2020-01-24 15:52:03 · 811 阅读 · 0 评论 -
Python 操作 Kafka,生产者和消费者代码 Demo
技术博客: https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。所用 Python 依赖包:kafka-python 1.3.3生产者:# -*- coding:utf-8 -*-from kafka import KafkaProducer# 此处ip可以是多个['0.0.0.1:9...原创 2020-01-24 15:45:42 · 3691 阅读 · 1 评论 -
使用 Redis 有序集合实现 IP 归属地查询
技术博客: https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。工作中经常遇到一类需求,根据 IP 地址段来查找 IP 对应的归属地信息。如果把查询过程放到关系型数据库中,会带来很大的 IO 消耗,速度也不能满足,显然是不合适的。那有哪些更好的办法呢?为此做了一些尝试,下面来详细说明。构建索引...原创 2020-01-24 15:30:18 · 303 阅读 · 0 评论 -
Python Elasticsearch DSL 查询、过滤、聚合操作实例
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。Elasticsearch 基本概念Index:Elasticsearch用来存储数据的逻辑区域,它类似于关系型数据库中的database 概念。一个index可以在一个或者多个shard上面,同时一个shard也可能会有多个repl...原创 2020-01-21 18:39:28 · 1077 阅读 · 0 评论 -
Python 实现哈夫曼树和哈夫曼编码
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。关于哈夫曼树的定义、构建以及哈夫曼编码,可以参考《大话数据结构》这本书,也可以看这篇博客,写的也很清楚。下面主要来看一下哈夫曼树的 Python 实现:#!/usr/bin/env python# -*- coding: utf-...原创 2020-01-21 18:38:09 · 2592 阅读 · 0 评论 -
Python 实现七大排序算法
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。本文用 Python 实现了插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序。先整体看一下各个算法之间的对比,然后再进行详细介绍:排序算法平均时间复杂度最好情况最坏情况空间复杂度排序方式稳定...原创 2020-01-21 18:36:12 · 208 阅读 · 0 评论 -
Python 实现二叉树前序,中序,后序,层次遍历
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。树是数据结构中非常重要的一种,主要的用途是用来提高查找效率,对于要重复查找的情况效果更佳,如二叉排序树、FP-树。另外可以用来提高编码效率,如哈弗曼树。用 Python 实现树的构造和几种遍历算法。实现功能如下:树的构造递归实现...原创 2020-01-21 18:35:02 · 236 阅读 · 0 评论 -
Python 实现数据结构中的的栈,队列
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。栈栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元...原创 2020-01-21 18:33:40 · 160 阅读 · 0 评论 -
Python 实现数据结构中的单链表,循环单链表,双链表
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。元素域 data 用来存放具体的数据。链接域 prev 用来存放上一个节点的位置。链接域 next 用来存放下一个节点的位置。变量 p 指向链表的头节点(首节点)的位置,从 p 出发能找到表中的任意节点。单链表# -*- co...原创 2020-01-21 18:31:18 · 211 阅读 · 0 评论 -
Flask-SocketIO 简单使用指南
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。Flask-SocketIO 使 Flask 应用程序能够访问客户端和服务器之间的低延迟双向通信。客户端应用程序可以使用 Javascript,C ++,Java 和 Swift 中的任何 SocketIO 官方客户端库或任何兼容的客户...原创 2020-01-21 18:26:35 · 2540 阅读 · 1 评论 -
Python 函数式编程,看这一篇就够了
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。lambdalambda 这个关键词在很多语言中都存在。简单地说,它可以实现函数创建的功能。如下便是 lambda 的两种使用方式。func1 = lambda : <expression()>func2 = lam...原创 2020-01-21 18:22:01 · 195 阅读 · 0 评论 -
每周一个 Python 标准库 | unittest
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。unittest 是 Python 自带的单元测试框架,可以用来作自动化测试框架的用例组织执行。优点:提供用例组织与执行方法;提供比较方法;提供丰富的日志、清晰的报告。unittest 核心工作原理unittest 中最核心的部分...原创 2020-01-21 18:04:49 · 312 阅读 · 3 评论 -
每周一个 Python 标准库 | socket
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。Socket 提供了标准的 BSD Socket API,以便使用 BSD 套接字接口通过网络进行通信。它包括用于处理实际数据通道的类,还包括与网络相关的功能,例如将服务器的名称转换为地址以及格式化要通过网络发送的数据。寻址、协议族和...原创 2020-01-21 18:03:32 · 452 阅读 · 0 评论 -
每周一个 Python 标准库 | ipaddress
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。ipaddress模块包括用于处理 IPv4 和 IPv6 网络地址的类。这些类支持验证,查找网络上的地址和主机以及其他常见操作。地址最基本的对象代表网络地址本身。传递字符串,整数或字节序列给 ip_address() 来构造地址。...原创 2020-01-21 18:02:03 · 357 阅读 · 0 评论 -
每周一个 Python 标准库 | hashlib
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。hashlib 模块定义了用于访问不同加密散列算法的 API。要使用特定的哈希算法,需要先用适当的构造函数或new()创建哈希对象。然后,无论使用何种算法,对象都使用相同的 API。散列算法由于hashlib 受 OpenSSL “...原创 2020-01-21 18:00:50 · 213 阅读 · 0 评论 -
每周一个 Python 标准库 | multiprocessing
技术博客:https://github.com/yongxinz/tech-blog同时,也欢迎关注我的微信公众号 AlwaysBeta,更多精彩内容等你来。multiprocessing 是 Python 的标准模块,它既可以用来编写多进程,也可以用来编写多线程。如果是多线程的话,用 multiprocessing.dummy 即可,用法与 multiprocessing 基本相同。基础...原创 2020-01-21 17:59:06 · 261 阅读 · 0 评论