首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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 · 51 天前 · 1478 次点击
    这是一个创建于 51 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

    现在我会去想办法把大文件都尽可能拆成小模块,组织起来方便。
    iorilu
        13
    iorilu   49 天前
    这事为了用户方便的, 直接拷贝, 不用 pip
    coolzilj
        14
    coolzilj   49 天前 via Android
    @ClericPy 谢谢,其实就是想知道作者是咋想的
    wuwukai007
        15
    wuwukai007   49 天前 via Android
    @cjq8z note10 打开闪退
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2653 人在线   最高记录 5168   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 32ms · UTC 12:08 · PVG 20:08 · LAX 04:08 · JFK 07:08
    ♥ Do have faith in what you're doing.