没写过几行 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 2019-11-29 19:02:55 +08:00 via Android
卧槽,手机 chrome 打开会闪退…
|
2
Trim21 2019-11-29 19:05:10 +08:00 via Android
作者的个人喜好…我见到的大多数项目都是分开的
|
4
jdhao 2019-11-29 19:33:36 +08:00 via Android
不是,一般都会不同模块有自己的文件
|
5
GoLand 2019-11-29 20:36:48 +08:00
peewee 比较奇葩罢了。而且也不太好用,代码绕来绕去 debug 贼复杂。
|
6
ila 2019-11-29 20:40:51 +08:00 via Android
bottle 中枪
|
7
ClericPy 2019-11-29 20:48:53 +08:00 1
|
8
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 一次), 强行洗也有点洗不动... |
9
Tink 2019-11-29 21:39:55 +08:00 via iPhone
这是个大佬
|
10
slanternsw 2019-11-29 22:09:07 +08:00
歪楼,webrender 性能真好
|
11
cjq8z 2019-11-30 05:39:55 +08:00 via Android
@guog Samsung Galaxy S10+ chrome 并没有闪退,只是载入时候慢了一些。你手机该换了。
|
12
superrichman 2019-11-30 10:49:48 +08:00 via iPhone
我几年前的想法:文件不拆一时爽, 一直不拆一直爽。
现在我会去想办法把大文件都尽可能拆成小模块,组织起来方便。 |
13
iorilu 2019-11-30 22:45:31 +08:00
这事为了用户方便的, 直接拷贝, 不用 pip
|
15
wuwukai007 2019-12-01 14:45:44 +08:00 via Android
@cjq8z note10 打开闪退
|