Python | tags

Python 结构化日志设置[翻译] 25-07-06

在日常开发中,python 项目常用的 log 方法就是 logger.info(f"xxx failed, {user=}, {filename=}"), 这样的日志包含一定的信息,在大多数情况下是够用的,但是在大型、可观测性要求较高的情况,还需要更多的上下文信息才能定位问题,例如,这个日志属于哪个请求,如果日志里面充满了相同用户的不同文件名称的日志,还是无法定位上一步某个关 …

Pydantic v2 Sqlalchemy v2 项目开发总结 24-08-10

最近使用 fastapi pydantic(v2) sqlalchemy(v2) 写了一个两千行左右的 API 项目,这是第一次面向 class 写 python 项目,和以前使用 requests、pandas 写数据处理脚本有很大区别,特别是 sqlalchemy 第一次使用,看文档内容非常多,在和 pydantic 的 schema 相互转换遇到很多问题,所以做一个笔记。 …

Python @contextmanager 的使用 23-11-05

日常开发中使用这个注解的情况比较少,今天发现其实有一个临时环境变量设置的使用方式。

Python 异步编程 23-09-24

异步编程很难,但却是最近十年所有编程语言在发力的方向。 在面向 CPU 计算的场景下,多线程基本都能吃满 CPU 资源。但是在 IO 场景下,多线程并不能解决问题,大部分时间线程都在等待 IO 调用的返回。 实际上 python 的官方教程里面并没有 async 编程的内容,而是在std lib doc 中网络编程章节介绍了 asyncio 这个 lib,实际上这也是异步编程的最佳使用场景。 …

使用 OpenPyXL 读写 excel 大文件 23-05-07

使用 python OpenPyXL 读写 excel 大文件时,有专门的 read_only write-only 模式来提升读写效率。 […] from openpyxl import load_workbook wb = load_workbook(filename='large_file.xlsx', read_only=True) ws = …

Python Tips for Impatient Dev 22-01-31

py3.6 开始,推荐使用 f-string,不要使用 %s或者 "".format().如果接收用户输入,使用 Template 做安全校验。 在 python f-string 中可以通过变量或者表达式后面加=实现打印变量名或者表达式: […] print(f'{v=}') # 等价 print(f'v={v}') …

Python 如何实现一个拼写检查器[翻译] 20-10-25

谷歌 AI 负责人 norvig 在 07 年写的如何实现一个拼写纠正器的经典博文How to Write a Spelling Corrector. 上面的链接已经是 16 年更新过了,程序也更新到了 python3. 中文版的翻译 如何实现一个拼写纠正器 还是基于 07 年版本的。 […] 博文最有意思的地方是大牛记录了如何在飞机上面没有网络的条件下徒手写一个准确率超过 70% …

基于 MDX 的 web 词典 20-07-01

Mdict 项目是一个糅合了 MDX 词典、ES 例句搜索和 AI 模型翻译的多源搜索功能 Web 词典。特别适合部署在内网中学习使用或者给孩子学习使用。 python 版本增加了一个机器学习模型翻译.rust 版本也有模型,但是还没来得及加。 […] mdict-py 源码 […] Mdict 项目是一个糅合了 MDX 词典、ES 例句搜索和 AI 模型翻译的多源搜索 …

Python 4 道笔试题 20-06-04

4 道常见的 python 面试题和解答,以及一些 python 陷阱的链接。 […] def change(v): v[1] = 4 return v a = [1, 2, 3] print(change(a)) print(a) 题目 2 def append1(x=[]): x.append(1) return x def now(n=time.time()): …

Scala Python 文件读取跳过转义字符 20-06-04

在文件读取的时候,会遇到非法转义字符,导致文件按行读取失败。此时可以通过忽略转义字符来解决。本文记录了 scala 和 python 的方法。 […] 有 50G 的服务器日志,拆分为几千个 txt 文件,编码是 utf8,使用 scala 和 python 按行处理: […] def main(args: Array[String]): Unit = { for …

Matplotlib 图例中文乱码解决方案 20-05-01

很久以前写的一个答案,四年来一直有人评论感谢,说只有我的方法是有效的。非常意外也很高兴。也放到博客中里备份吧。 zhihu.com

Jupyter Notebook Install New Package[翻译] 18-11-01

在 pycharm 写代码中如果使用到新的 package,例如numpy,只需要输入import numpy 然后 ALT+ENTER 在提示中选择 install new package 即可。 […] 在 notebook 中,网上的教程都说是!pip install numpy. 但是这个可能有坑。究其原因是因为: […] 通过 bash …