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

2019-11-29 18:58:13 +08:00
 coolzilj

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

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

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

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

3827 次点击
所在节点    Python
15 条回复
guog
2019-11-29 19:02:55 +08:00
卧槽,手机 chrome 打开会闪退…
Trim21
2019-11-29 19:05:10 +08:00
作者的个人喜好…我见到的大多数项目都是分开的
ipwx
2019-11-29 19:09:44 +08:00
这个做法只有一个目的:你可以把 peewee.py 拷到你的项目里直接用,而不是 pip install
jdhao
2019-11-29 19:33:36 +08:00
不是,一般都会不同模块有自己的文件
GoLand
2019-11-29 20:36:48 +08:00
peewee 比较奇葩罢了。而且也不太好用,代码绕来绕去 debug 贼复杂。
ila
2019-11-29 20:40:51 +08:00
bottle 中枪
ClericPy
2019-11-29 20:48:53 +08:00
你是想问作者怎么想的还是想知道社区怎么想的?
作者想法有人问过了:
https://github.com/coleifer/peewee/issues/501
ClericPy
2019-11-29 21:07:34 +08:00
社区这头好像大部分的看法是逻辑不复杂, 行数不多的情况下用 module, 否则用 package

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

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

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

现在我会去想办法把大文件都尽可能拆成小模块,组织起来方便。
iorilu
2019-11-30 22:45:31 +08:00
这事为了用户方便的, 直接拷贝, 不用 pip
coolzilj
2019-12-01 02:01:19 +08:00
@ClericPy 谢谢,其实就是想知道作者是咋想的
wuwukai007
2019-12-01 14:45:44 +08:00
@cjq8z note10 打开闪退

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/624437

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX