首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >读者推荐:本月最好用的5个库

读者推荐:本月最好用的5个库

作者头像
用户11081884
发布2026-07-20 20:28:30
发布2026-07-20 20:28:30
240
举报

这周在读者群里做了个小调查,问大家最近在用啥好用的Python库。

结果炸出来一堆推荐,有几个我试了之后直接拍大腿——这也太香了吧。

今天就把这5个反馈最多的库整理出来,每个都带真实使用场景和踩过的坑。


1. tqdm - 进度条它不香吗

以前我写循环从来不加进度条,直到有一次跑了3小时的爬虫,中途不知道卡住还是正常执行,人都麻了。

代码语言:javascript
复制
fromtqdmimporttqdm
importtime

# 以前这样写
foriinrange(1000):
    # 业务逻辑
    time.sleep(0.01)

# 现在这样写
foriintqdm(range(1000), desc="下载中"):
    time.sleep(0.01)

就多了两行代码,命令行里直接显示进度条、预估剩余时间、下载速度。

读者@阿杰的吐槽

我之前跑机器学习训练,跑了2个小时不知道进度,加了tqdm之后才发现原来epoch 50/100就卡住了,后来排查出是数据加载的问题。

进阶用法

代码语言:javascript
复制
fromtqdmimporttqdm
importrandom

pbar = tqdm(total=100, desc="处理中",
            bar_format="{l_bar}{bar}| {n_fmt}/{total_fmt} [{elapsed}<{remaining}]")

foriinrange(100):
    time.sleep(random.uniform(0.01, 0.05))
    pbar.update(1)
pbar.close()

2. Pydantic - 终于不用手写参数验证了

之前写API参数验证,全靠if-else写到手抽筋:

代码语言:javascript
复制
# 以前的写法
defcreate_user(name, age, email):
    ifnotisinstance(name, str):
        raiseValueError("name必须是字符串")
    ifnotisinstance(age, int):
        raiseValueError("age必须是整数")
    ifage<0orage>150:
        raiseValueError("age范围不对")
    if"@"notinemail:
        raiseValueError("email格式不对")
    # 业务逻辑...

换了Pydantic,20行变3行:

代码语言:javascript
复制
frompydanticimportBaseModel, EmailStr, Field
fromtypingimportOptional

classUser(BaseModel):
    name: str = Field(..., min_length=1, max_length=50)
    age: int = Field(..., ge=0, le=150)
    email: EmailStr
    bio: Optional[str] = None

# 直接用,自动验证
user = User(name="小明", age=25, email="xiaoming@example.com")

读者@技术小张的血泪教训

之前用dict传参,用户传个字符串“25”当age,后端没做类型转换直接存了,数据库字段是int,查数据的时候出各种莫名其妙的问题。换了pydantic,从源头卡死,爱传错类型?门都没有。

Settings配置也很好用

代码语言:javascript
复制
frompydantic_settingsimportBaseSettings

classConfig(BaseSettings):
    database_url: str
    api_key: str
    debug: bool = False

    classConfig:
        env_file = ".env"

config = Config()  # 自动从环境变量读取

3. Rich - 命令行也能有脸面

如果你还在用print输出日志,我劝你试试这个。

代码语言:javascript
复制
fromrich.consoleimportConsole
fromrich.tableimportTable

console = Console()

# 带颜色和样式的输出
console.print("[bold red]错误![/bold red] 文件不存在")
console.print("[green]成功[/green] 连接数据库")

# 表格直接帮你画好
table = Table(title="性能对比")
table.add_column("库", style="cyan")
table.add_column("速度", style="magenta")
table.add_column("易用性", style="green")

table.add_row("A库", "100ms", "⭐⭐⭐")
table.add_row("B库", "50ms", "⭐⭐")
table.add_row("Rich", "30ms", "⭐⭐⭐⭐⭐")

console.print(table)

读者@运维小李的真实反馈

我写的CLI工具之前输出全是白底黑字,用户说根本看不清。用了Rich之后,同事问我是不是换了套UI框架。(笑)

调试神器

代码语言:javascript
复制
fromrichimportprintasrprint
fromrich.prettyimportpprint

data = {"name": "测试", "users": [{"id": 1, "name": "张三"}, {"id": 2, "name": "李四"}]}

pprint(data)  # 自动美化JSON输出,带缩进和颜色

4. Loguru - 手写logging的日子到头了

Python的logging模块配置起来有多反人类,用过的都知道。

Loguru直接给你默认就很好用:

代码语言:javascript
复制
fromloguruimportlogger

logger.debug("调试信息")
logger.info("普通信息")
logger.success("成功信息")
logger.warning("警告信息")
logger.error("错误信息")

# 写文件也简单
logger.add("app.log", rotation="500 MB", retention="10 days")

# 异常捕获自带堆栈
@logger.catch
defrisky_function():
    # 可能出错的地方
    pass

读者@全栈小王的吐槽

之前每次写新项目,光logging配置就要写半小时。换了Loguru之后,一行import直接开干,默认输出带颜色和时间的,比我手写的配置好看多了。

配合异常追踪

代码语言:javascript
复制
fromloguruimportlogger
importtraceback

defmain():
    try:
        result = 1/0
    exceptException:
        logger.exception("出错了!")  # 自动记录完整堆栈
        logger.error(f"详细错误: {traceback.format_exc()}")

5. Watchfiles - 热更新它不香吗

之前写热更新功能,Linux用inotify好好的,Windows直接傻眼。

现在一个库搞定跨平台:

代码语言:javascript
复制
importwatchfiles

# 监控当前目录的py文件变化
forchangesinwatchfiles.watch("./src"):
    print("检测到变化:", changes)
    # 这里触发重启服务/重新加载配置

Flask热更新示例

代码语言:javascript
复制
fromwatchfilesimportwatch
fromflaskimportFlask
importsubprocess

app = Flask(__name__)

@app.route("/")
defhello():
    return"Hello World!"

defrestart_server():
    subprocess.run(["python", "app.py"])

if__name__ == "__main__":
    # 监控src目录,有变化就重启
    for_inwatch("src", step=5000):
        print("检测到代码变化,正在重启...")
        restart_server()

读者@独立开发者阿强的经验

我写Flask项目之前每次改代码都要手动重启,加了这个之后改完保存浏览器刷新就行,效率提升明显。不过注意别在重启逻辑里又触发watch,不然会死循环。(别问我是怎么知道的)


用完感觉怎么样

这5个库用了就回不去:

  • tqdm - 进度条,跑了长任务再也不用猜程序在干嘛了
  • pydantic - 数据验证,告别一堆if-else
  • rich - 命令行输出,终于能看了
  • loguru - 日志记录,一行import全搞定
  • watchfiles - 热更新,改代码保存就行

群里推荐的时候我还半信半疑,试了之后发现Rich和Loguru这两个改完确实舒服很多。

你们还有啥好用的库推荐?评论区聊聊!

“无他,惟手熟尔”!有需要的用起来!

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2026-05-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Nicholas与Pypi 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. tqdm - 进度条它不香吗
  • 2. Pydantic - 终于不用手写参数验证了
  • 3. Rich - 命令行也能有脸面
  • 4. Loguru - 手写logging的日子到头了
  • 5. Watchfiles - 热更新它不香吗
  • 用完感觉怎么样
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档