没写过几行 python, 所以最近在看一些社区流行的库想熟悉一下怎样写出 pythonic way 的代码。
今天在看 peewee 代码的时候发现,
这个 github 上 7k star 的库的核心代码基本都在一个文件里,
https://github.com/coleifer/peewee/blob/master/peewee.py
合计 7556 行代码(打开页面的时候卡了一下才留意到)
请问 python 的老司机们, 这是 python 社区推荐的做法吗? 还是说只是作者的个人喜好? 还是说有什么理由故意写个 post script 把代码 concat 成一个的?(不过并没有发现 makefile 之类的脚本)
纯属好奇,并没有什么个人偏见和喜好。
1
guog Nov 29, 2019 via Android
卧槽,手机 chrome 打开会闪退…
|
2
Trim21 Nov 29, 2019 via Android
作者的个人喜好…我见到的大多数项目都是分开的
|
4
jdhao Nov 29, 2019 via Android
不是,一般都会不同模块有自己的文件
|
5
GoLand Nov 29, 2019
peewee 比较奇葩罢了。而且也不太好用,代码绕来绕去 debug 贼复杂。
|
6
ila Nov 29, 2019 via Android
bottle 中枪
|
7
ClericPy Nov 29, 2019 |
8
ClericPy Nov 29, 2019
社区这头好像大部分的看法是逻辑不复杂, 行数不多的情况下用 module, 否则用 package
我个人理解, peewee 本身逻辑并不难理解, 单文件分发的好处显而易见, 甚至直接取片段代码 (MIT, 也省的去安装) 也省事, 如果是包结构, 那抄代码光依赖关系就够累了. package 结构的话有支持相对引用的操作, 这是避免 package 顶层名称经常修改而导致 import Error 的好方式, 而很多编辑器就算用上 LSP 也对这种 from .xx import xxx 的 goto definition 非常不友好, 导致跳转失灵, 如果是单文件 module 就不会有这问题. 所以后来的 linters 都已经把相对引用时候的不带顶层包名的操作加黄线警告了 所以我感觉 peewee 是为了使用者友好(毕竟逻辑再复杂一路 Alt+Click 通行无阻), 而牺牲开发者体验的一种选择(不少开发者的习惯是每个文件 commit 一次), 强行洗也有点洗不动... |
9
Tink PRO 这是个大佬
|
10
slanternsw Nov 29, 2019
歪楼,webrender 性能真好
|
12
superrichman Nov 30, 2019 via iPhone
我几年前的想法:文件不拆一时爽, 一直不拆一直爽。
现在我会去想办法把大文件都尽可能拆成小模块,组织起来方便。 |
13
iorilu Nov 30, 2019
这事为了用户方便的, 直接拷贝, 不用 pip
|
15
wuwukai007 Dec 1, 2019 via Android
@cjq8z note10 打开闪退
|