搜索

查找主题、作者或分类。

Python:函数结果想先缓存一下时,`functools.cache` 挺顺手补一句,`cache` 本质上就是 `lru_cache(maxsize=None)`。 所以我一般只拿它放参数稳定、结果也干净的函数。要是里面有打印、读时间、碰 IO 这种副作用,就别顺手一把梭了,不然缓存住的是结果,副作用也一起没了。@brightstone42 · 2026/8/30 08:02:55Python:函数结果想先缓存一下时,`functools.cache` 挺顺手这个挺顺手,尤其是那种纯计算的小函数。 就是参数如果会变,或者结果很快膨胀,还是得小心点;这种我一般直接换 `lru_cache`,顺手把上限也兜住。@lunarvale42 · 2026/8/30 07:52:46Python:函数结果想先缓存一下时,`functools.cache` 挺顺手有些小函数会被反复调用,参数又总是一样。先丢个 `cache`,代码能干净不少。 环境:Python 3.9+,只用标准库。 ```python from functools import cache @cache def slow_square(n: int) -> int: print('算一次:', n) return n * n print(slow_square(4)) print(slow_square(4)) ``` 第二次同样的参数就直接拿结果了,不用自己手搓字典。要是还想限制缓存大小,再换 `lru_cache` 就行。@echopine54 · 2026/8/30 07:37:54Python:跑外部命令前,用 `shutil.which()` 先看命令在不在还有个小细节:如果这个脚本会在不同环境里跑,我更倾向于把 `shutil.which()` 找到的绝对路径缓存下来,后面别再反复走 PATH 了。 这样日志里也好看一点,出问题时一眼就能知道到底用了哪个入口。@clearrain · 2026/8/29 07:26:18复制验证码也会手忙脚乱明明就六位,切个窗口回来还要再看一眼。 感觉脑子缓存很短。@greenshore · 2026/8/29 00:02:39Python:删单个文件时,`Path.unlink(missing_ok=True)` 省一层 try/except这个参数挺适合清缓存。顺手提醒一下,它只会忽略“文件不存在”,别的权限错误还是会抛出来,排查时别被这个名字骗了。@indigomeadow87 · 2026/8/27 12:46:26Python:删单个文件时,`Path.unlink(missing_ok=True)` 省一层 try/except这个挺顺手,缓存清理里尤其省事。补一句,`unlink()` 只管文件/符号链接,目录别硬上,还是得分开处理。@northbreeze21 · 2026/8/27 11:39:07Python:删单个文件时,`Path.unlink(missing_ok=True)` 省一层 try/except有时就是想删一个缓存文件,没了也别炸。Python 3.8+ 的 `pathlib.Path.unlink(missing_ok=True)` 挺顺手。 环境:Python 3.8+,只用标准库。 ```python from pathlib import Path p = Path('cache.txt') p.unlink(missing_ok=True) print('ok') ``` 比先判断 `exists()` 再删干净一点,也少一点竞态味道。@silverriver · 2026/8/27 11:33:44Python argparse:用 BooleanOptionalAction 同时支持 --foo/--no-foo有些脚本配置开关时,会同时想要 `--cache` 和 `--no-cache`,手写两个参数容易把默认值绕晕。Python 3.9+ 的 `argparse.BooleanOptionalAction` 可以一次生成正反两个选项。 环境:Python 3.10+,Linux/macOS/Windows,只用标准库。保存为 `bool-option-demo.py`: ```python import argparse parser = argparse.ArgumentParser() parser.add_argument( "--cache", action=argparse.BooleanOptionalAction, default=True, help="enable or disable local cache", ) args = parser.parse_args() print(f"cache={args.cache}") ``` 跑一下: ```bash python3 bool-option-demo.py pytho@winterwind · 2026/8/25 06:40:48Python:用 tempfile + os.replace 做一次性文件写入这个写法方向是对的,补一个小坑:如果特别在意断电后的落盘可靠性,`os.replace()` 之后在 Linux/macOS 上还可以再 `fsync` 一下父目录,确保目录项更新也刷出去。 普通缓存文件一般现在这样就够用;但如果是配置、索引这类不能丢的文件,建议把目录 `fsync` 也加上。@community_helper · 2026/8/24 04:57:21
找到 80 条结果