Hacker News 中文摘要

RSS订阅

我转投Python并真心喜欢上了它 -- I'm Switching to Python and Actually Liking It

文章摘要

作者因人工智能领域的巨大机会,半年前开始更多使用Python编程。虽然之前仅用于编写小脚本,如抓取YouTube视频元数据的脚本,但Python的便捷性和人性化语法使其逐渐喜欢上这门语言,并认为在AI领域Python是事实上的编程语言。

文章总结

文章总结

标题: 我转向Python并且真的喜欢上了它
发布时间: 2025年7月15日
来源: César Soto Valero的博客

主要内容

  1. 转向Python的原因
    作者在6个月前开始更多地使用Python,主要原因是为了应对AI领域的巨大机会。Python已成为AI领域的事实标准编程语言。尽管作者之前只用Python编写过一些小脚本,但最近为了构建AI应用(如RAG、Agent、GenAI工具等),他决定认真学习和使用Python。

  2. Python的优势

    • 生态系统:Python拥有丰富的库和工具,特别适合数据处理和分析。
    • 性能提升:通过Cython等优化编译器,Python的性能得到了显著提升。
    • 语法改进:Python逐渐隐藏了其历史遗留的“丑陋”语法(如__init____new__等),使其更加简洁和易用。
  3. 项目结构
    作者倾向于使用单体仓库(monorepo)结构来管理Python项目,包含前后端代码。他认为这种结构简单、易于管理,并且适合个人开发者。项目结构通常包括:

    • .github/:GitHub Actions的CI/CD工作流。
    • .vscode/:VSCode的配置。
    • docs/:项目文档。
    • project-api/:后端API,处理业务逻辑和数据处理。
    • project-ui/:前端UI,通常使用Next.js或React。
  4. Python工具箱
    作者分享了他常用的Python工具和库,包括:

    • uv:Python包管理工具,用于安装和管理依赖。
    • ruff:快速Python代码格式化工具,集成了isortflake8等功能。
    • ty:Python类型检查工具,帮助捕获类型错误。
    • pytest:Python测试框架,支持简单的测试用例编写。
    • Pydantic:数据验证和设置管理库,帮助管理配置。
    • MkDocs:用于生成项目文档的静态网站生成器。
    • FastAPI:用于构建RESTful API的框架,具有自动验证和文档生成功能。
    • Dataclasses:Python内置功能,用于简化数据容器的创建。
  5. 版本控制和CI/CD

    • GitHub Actions:用于自动化构建和测试,支持跨操作系统。
    • Dependabot:自动检查并更新依赖。
    • Gitleaks:防止敏感信息(如API密钥)被提交到仓库。
    • Pre-commit Hooks:在提交代码前运行检查和格式化工具。
  6. 基础设施管理

    • Make:用于自动化常见开发任务,如测试、构建和部署。
    • Docker:用于容器化应用,确保开发环境与生产环境一致。作者使用Docker Compose来管理多个容器服务。

结论

作者通过实际项目经验,发现Python在AI开发、数据处理和API构建等方面表现出色。尽管Python在“生产就绪”应用和Jupyter笔记本之间仍存在差距,但通过合理的工具和项目结构,Python已经成为一个强大且令人愉悦的开发语言。

评论总结

  1. Python的普及与集成

    • 评论1指出Python默认集成在大多数Linux发行版中,但在BSD系统中并不包含。macOS曾经默认安装Python 2,但后来被移除。
      • 引用:"It’s included in the default install of most desktop/server Linux distros (with plenty of exceptions), but I don’t believe any of the BSDs ship it in their base system."
    • 评论15提到,虽然Python解释器在Unix系统中广泛集成,但实际使用中虚拟环境和容器管理工具仍然是必要的。
      • 引用:"literally anything beyond 'import json' will likely lead you into the abyss of virtual envs."
  2. Python的语法与工具

    • 评论3讨论了Python的语法改进,认为__init____new__等核心方法并非“遗留丑陋”,而是Python的核心特性。
      • 引用:"What exactly is the problem with init or new? @dataclass is very nice syntactic sugar, but are we arguing here that having access to initializer/allocator/constructor dunder methods is 'legacy ugliness'?"
    • 评论26认为Python的语法不如Ruby优雅,但其工具和丰富的库使其成为首选。
      • 引用:"I really don’t find the Python language elegant at all. I prefer the Ruby syntax. But Python’s tooling, particularly with what Astral is doing (uv, ruff, ty), is so good."
  3. Python的包管理与版本问题

    • 评论4指出Python的版本和包管理是一个噩梦。
      • 引用:"Python’s version and package management is nothing short of a nightmare."
    • 评论14提到Python项目中的依赖管理和版本冲突问题,认为这些约束有助于项目的可维护性。
      • 引用:"Everyone had their own Python version, dependencies missing from requirements.txt, three way conflicts between 2 dependencies and the python version."
  4. Python在AI领域的应用

    • 评论13和20讨论了Python在AI领域的广泛应用,认为这是由于其丰富的库和易用性。
      • 引用:"It’s clear (to me) that big money opportunities are all over AI these days. And guess what’s the de facto programming language for AI? Yep, that sneaky one."
    • 评论23提到Python在AI领域的地位,特别是PyTorch的应用。
      • 引用:"Is this referring at all to to PyTorch. If not, any guesses what the author has in mind."
  5. Python的调试与维护

    • 评论28指出Python在跨语言调用和调试方面的困难,特别是在与C++等编译语言交互时。
      • 引用:"Debugging python can be...painful. If you have a pure perfect environment dedicated to pure python and all the tooling set up, it can be breezy."
    • 评论19提到代码中的用户体验问题,认为应该更清晰地提示错误信息。
      • 引用:"Presenting the user with 'Missing X OR Y' when there’s no reason that OR has to be there massively frustrates the user."

总结:Python因其易用性、丰富的库和在AI领域的广泛应用而受到广泛认可,但其包管理、版本控制和调试问题也备受诟病。尽管语法不如某些语言优雅,Python的工具和生态系统使其在许多场景下成为首选。