2026
10-07
10-07
Python装包慢到怀疑人生?这个Rust重写的神器直接快10倍
一个用 Rust 重写的 Python 包管理器,把 pip、virtualenv、pyenv、pip-tools、pipx 五件套合并成一个二进制,依赖解析快到离谱。你是不是也遇到过这种情况:新拉一个 Python 项目,敲下 pip install -r requirements.txt,然后眼睁睁看着转圈圈转了 90 秒,三杯咖啡都喝完了,依赖还没装完。更离谱的是,等它终于装完,你换台电脑再装一遍,又得重新转 90 秒。同一个项目,同样 23 个包,pip 每次 6.6 秒起跳,大项目直接奔着一分半去了。
继续阅读 >
Persimmon是一种零代码可视化数据流编程语言,专为Python的机器学习库sklearn设计。它通过图形化的方式,让用户可以直观地理解和操作数据流,从而更加高效地进行机器学习模型的构建和训练。如果需要打造类似的零代码工具,可以参考Persimmon的代码进二次开发。
我点开截图,二十多行代码,fig、ax、plt、subplots 堆在一起,报错信息是 AttributeError: 'NoneType' object has no attribute 'set_xlabel'。她就是想画个月度趋势图,结果被 matplotlib 的面向对象接口搞懵了。
Python 程序员跟并发缠斗了快二十年。从 threading 到 asyncio,从 multiprocessing 到 concurrent.futures,每一代方案都在解决上一代的问题,同时又引入新的麻烦。
Python 的报错信息也提供了“路口”和“原因”,只要学会读取,就能顺利“改道”。
Python 代码得先转成 TypeScript 对象,再手动调用 to_js 接口,像翻译官一样在两种语言之间来回传话。写错一个类型转换,线上直接崩。
写Python代码时间长了,有些习惯会慢慢变。一开始只求能跑,后来会想怎么少写几行,怎么让下一个人看懂。下面这些技巧都不是教科书里的标准答案,是踩过坑以后留下的记号。列表推导式用多了会腻。换个思路,用生成器表达式处理大文件。读一个几百万行的日志,sum(1 for line in f if 'error' in line)比先读进列表再循环省内存。内存不是无限大的,尤其跑在容器里的时候。
这篇笔记从 Jupyter 环境开始,把 requests 原生调用、OpenAI SDK、.env 密钥管理、stream 流式输出一次讲清。
很多人写Python时会写很多重复代码。他们习惯把功能堆在一个文件里。时间长了,改一处就要检查十处。这不是Python的问题,是习惯的问题。
写了个 Python 工具想发给同事用,对方说"我没装 Python"。发 .py 文件过去等于让对方走一遍装环境、装依赖的流程,大概率用不起来。用 PyInstaller 把脚本打成 .exe,对方不用装任何东西,双击就能跑。
写Python代码的人经常遇到一个情况。同一个功能有好几种写法。选哪种写法,短时间看不出差别。项目变大以后,差别就出来了。
与 C、C++、Rust 以及其他编译型语言相比,CPython 在 CPU 密集型工作负载下确实可能慢很多。Global Interpreter Lock(GIL)、动态类型、对象分配以及解释器开销,长期以来限制了纯 Python 代码的执行速度。
很多人写Python会不自觉地绕远路。代码能跑,功能也对,就是看着别扭。这种别扭不是审美问题,是习惯问题。改掉几个习惯,代码立刻短一截,读起来也顺。
中秋想给家人、朋友、客户发张贺卡,去网上找图库模板,要么收费要么带水印,发出去"撞款"概率高。自己用 Python 画一张也不复杂:深蓝夜空 + 一轮圆月 + 祝福文字,名字自动填进去,每张都不一样。
Python 3.15即将发布。在这次的候选版本3.15.0rc2更新中,有趣的变化不再体现在阅读更新日志时候了。
Dash 框架入门:用纯 Python 构建交互式数据应用Dash 是一个由 Plotly 公司开发的开源框架,让你只用 Python 就能构建具有丰富交互性的 Web 应用。你不需要写任何 HTML、CSS 或 JavaScript,所有界面和逻辑都可以通过 Python 对象与回调函数完成。它非常适用于数据分析、仪表盘、机器学习演示等场景。
在日常办公场景中,合同审批、技术文档迭代、公文修订等工作中,经常需要对比两个 Word 文档版本之间的差异。虽然 Word 本身提供了“比较”功能,但当需要批量处理或集成到自动化流程中时,通过编程方式实现文档对比就变得非常必要。本文将介绍如何使用 Python 和 Free Spire.Doc for Python 库来实现 Word 文档的自动对比。
在很久很久以前,Python的包管理非常混乱,这导致不同的项目几乎无法同时运行,所以就出现了Python 环境管理的概念,不同项目的环境彼此隔离,开发者可以为不同项目分别管理依赖项、Python 版本和软件包。弄清其底层工作机制有助于排查依赖问题、构建可复现的应用程序,也便于管理复杂的 Python 项目。
写Python的人经常盯着大O符号看。他们花时间选对数据结构,用上生成器,避开嵌套循环。这些做法没错。可代码跑起来还是慢,尤其当数据量上去以后。问题往往藏在更细的地方。下面说三个点,每个都能让执行时间掉一截。
Python 3.13 引入了实验性的 free-threaded build,可以在没有 Global Interpreter Lock 的情况下运行。Python 3.14 又迈出了重要一步:free-threaded Python 现在已经得到正式支持。
写Python有些年头了。见过很多人卡在一些地方,不是语法问题,是思路没转过来。今天说的三个技巧,书上一般不专门讲,日常写代码却天天碰到。
上个月公司来了个新同事,叫小陈,刚毕业一年。leader让他接手我去年写的一个数据处理项目,里面有60多个Python文件,200多个函数。
第一个技巧:把代码当句子读Python本来就像英语。变量是名词。函数是动词。user_name = input() 就是“问用户要名字,存起来”。print('hello') 就是“说你好”。别死记语法。读出声。读五十行代码,比背一百条规则管用。有人学三个月还写不出登录功能。让他每天读二十行别人写的爬虫代码。两周后自己就能改。嘴动了,脑子就动了。
写Python的人常遇到运行慢。程序跑起来像背着沙袋走路。有人建议加缓存。缓存确实快。它把算完的结果存起来,下次直接拿。可缓存有代价。内存吃紧。数据会旧。代码变复杂。今天不讲缓存。讲三个改代码本身的技巧。它们不存结果,只改干活的方式。改完速度能上去。