推荐学习书目
› Learn Python the Hard Way
Python Sites
› PyPI - Python Package Index
› http://diveintopython.org/toc/index.html
› Pocoo
值得关注的项目
› PyPy
› Celery
› Jinja2
› Read the Docs
› gevent
› pyenv
› virtualenv
› Stackless Python
› Beautiful Soup
› 结巴中文分词
› Green Unicorn
› Sentry
› Shovel
› Pyflakes
› pytest
Python 编程
› pep8 Checker
Styles
› PEP 8
› Google Python Style Guide
› Code Style from The Hitchhiker's Guide
coolzilj
V2EX  ›  Python

不懂就问, peewee 的这种文件组织结构是 Python 社区推荐的吗?

  •  
  •   coolzilj · Nov 29, 2019 · 4932 views
    This topic created in 2535 days ago, the information mentioned may be changed or developed.

    没写过几行 python, 所以最近在看一些社区流行的库想熟悉一下怎样写出 pythonic way 的代码。

    今天在看 peewee 代码的时候发现, 这个 github 上 7k star 的库的核心代码基本都在一个文件里, https://github.com/coleifer/peewee/blob/master/peewee.py
    合计 7556 行代码(打开页面的时候卡了一下才留意到)

    请问 python 的老司机们, 这是 python 社区推荐的做法吗? 还是说只是作者的个人喜好? 还是说有什么理由故意写个 post script 把代码 concat 成一个的?(不过并没有发现 makefile 之类的脚本)

    纯属好奇,并没有什么个人偏见和喜好。

    15 replies  •  2019-12-01 14:45:44 +08:00
    guog
    guog
    Nov 29, 2019 via Android
    1
    卧槽,手机 chrome 打开会闪退…
    Trim21
    Trim21
    Nov 29, 2019 via Android
    2
    作者的个人喜好…我见到的大多数项目都是分开的
    ipwx
    ipwx
    Nov 29, 2019❤️1
    3
    这个做法只有一个目的:你可以把 peewee.py 拷到你的项目里直接用,而不是 pip install
    jdhao
    jdhao
    Nov 29, 2019 via Android
    4
    不是,一般都会不同模块有自己的文件
    GoLand
    GoLand
    Nov 29, 2019
    5
    peewee 比较奇葩罢了。而且也不太好用,代码绕来绕去 debug 贼复杂。
    ila
    ila
    Nov 29, 2019 via Android
    6
    bottle 中枪
    ClericPy
    ClericPy
    Nov 29, 2019❤️1
    7
    你是想问作者怎么想的还是想知道社区怎么想的?
    作者想法有人问过了:
    https://github.com/coleifer/peewee/issues/501
    ClericPy
    ClericPy
    Nov 29, 2019
    8
    社区这头好像大部分的看法是逻辑不复杂, 行数不多的情况下用 module, 否则用 package

    我个人理解, peewee 本身逻辑并不难理解, 单文件分发的好处显而易见, 甚至直接取片段代码 (MIT, 也省的去安装) 也省事, 如果是包结构, 那抄代码光依赖关系就够累了.

    package 结构的话有支持相对引用的操作, 这是避免 package 顶层名称经常修改而导致 import Error 的好方式, 而很多编辑器就算用上 LSP 也对这种 from .xx import xxx 的 goto definition 非常不友好, 导致跳转失灵, 如果是单文件 module 就不会有这问题. 所以后来的 linters 都已经把相对引用时候的不带顶层包名的操作加黄线警告了

    所以我感觉 peewee 是为了使用者友好(毕竟逻辑再复杂一路 Alt+Click 通行无阻), 而牺牲开发者体验的一种选择(不少开发者的习惯是每个文件 commit 一次), 强行洗也有点洗不动...
    Tink
    Tink
    Nov 29, 2019 via iPhone
    9
    这是个大佬
    slanternsw
    slanternsw
    Nov 29, 2019
    10
    歪楼,webrender 性能真好
    cjq8z
    cjq8z
    Nov 30, 2019 via Android
    11
    @guog Samsung Galaxy S10+ chrome 并没有闪退,只是载入时候慢了一些。你手机该换了。
    superrichman
    superrichman
    Nov 30, 2019 via iPhone
    12
    我几年前的想法:文件不拆一时爽, 一直不拆一直爽。

    现在我会去想办法把大文件都尽可能拆成小模块,组织起来方便。
    iorilu
    iorilu
    Nov 30, 2019
    13
    这事为了用户方便的, 直接拷贝, 不用 pip
    coolzilj
    coolzilj
    OP
    Dec 1, 2019 via Android
    14
    @ClericPy 谢谢,其实就是想知道作者是咋想的
    wuwukai007
    wuwukai007
    Dec 1, 2019 via Android
    15
    @cjq8z note10 打开闪退
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1489 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 60ms · UTC 06:11 · PVG 14:11 · LAX 22:11 · JFK 01:11
    ♥ Do have faith in what you're doing.