Python 缺少一个类似 Spring Boot 的通用应用程序框架?

2023-12-06 22:37:39 +08:00
 RockChinQ

一些个人的浅见,想听听大家的看法或者实践。

最近两年做了几个比较实用也稍微有点热度的项目,在某些组件重构了很多次之后发现:

最近浅看了一下 Spring Boot 教程之后,发现 Spring Boot 能较好地解决了上述几个问题(自动装配、MVC 分层、统一配置文件),这让新手能很轻松地构建一个架构行得通的程序,对比之下 Python 由于语法过于灵活,容易写得很乱。然后就思考一下几个问题:

第一次发帖,希望能听听其他人的见解。

2910 次点击
所在节点    Python
12 条回复
RockChinQ
2023-12-06 23:36:11 +08:00
可否有这样一个框架能让 Python 新生少走弯路?使 Python 适应较大的应用开发?目前是否有这个需求呢?
yyfearth
2023-12-07 04:00:11 +08:00
Spring Boot 也没有 Desktop GUI 的吧
Spring 倒是和 Django 有点类似
dayeye2006199
2023-12-07 05:22:01 +08:00
django 表示 那我是干什么的?

如果 django 都嫌臃肿的话,那 sprintboot 是啥?

python 很多时候不需要 DI ,因为语言特性足够灵活,完全可以绕过去。
sordidclown
2023-12-07 08:42:19 +08:00
结合我个人的体验来说,OP 的这个问题的一部分是不是能归结为 Python 缺乏像 Java 一样通用的工程化准则?但是在类型注解出现之前,鸭子类型的语言本身就不太适合做工程,所以其实最后的落点反而是用 Python 做工程的人相对较少(?),相对来说,分享这方面经验的也少,最后都需要自己摸索。但其实如果要学习如何组织,其实可以看看开源的库,或者从其他语言借鉴(狗头)。之前找这方面的时候找到了一个项目: https://pyloong.github.io/pythonic-project-guidelines/
顺带一提,如果想同时 Web 和 GUI 开发,题主可以考虑下 Flet ,现在最新版已经提供了 Webview ,大部分情况下应该够用了。
RockChinQ
2023-12-07 09:18:56 +08:00
@dayeye2006199 Django 似乎可以满足部分需求,我再去了解一下。我的意思是,在构建一定规模的应用时,Python 的高灵活性是一项缺点,因为一种需求可能的实现不唯一,造成可读性较差,受程序员个人水平影响严重。如果有一个统一的框架,提供一种最佳实践抹平程序员水平间的差异就好了。我再去了解一下 Django 。
RockChinQ
2023-12-07 09:23:50 +08:00
@sordidclown 对的,我和你的想法基本一致,我现在写函数参数、类成员都会习惯加上 type hints 。我去看看你给的链接。并不是要做 web 和 gui ,一开始的 po 出的框架只是想说明目前的框架都比较关注单独一个组件的功能。
flmn
2023-12-07 10:41:57 +08:00
Django
roundgis
2023-12-07 16:59:46 +08:00
要在大項目應用 python 。對從業人員有一定要求。
RockChinQ
2023-12-07 17:41:07 +08:00
@roundgis 可以详细说一下吗?以及你自己的经历?
ZX576
2023-12-13 18:29:44 +08:00
@RockChinQ

提供一种最佳实践抹平程序员水平间的差异就好了 -
ZX576
2023-12-13 18:41:21 +08:00
@RockChinQ

提供一种最佳实践抹平程序员水平间的差异就好了 -> 不太可能,以 django 为例,且不说 type hints ,写接口用 def 还是 class 都无法统一起来。

纵观 V 站、知乎之类的问答,各类程序员(包括 Pythonista )愿意把 Python 代码当维护的工程来写的都很少。社区自己也摆烂,type hints 和 asyncio 出了多少年了,django 至今不充分跟进。django 的结构就是大工程应用的解法,奈何 django 自己不努力,而现在流行的 fastapi 基于 starlette 改,人家就没想做大工程,定位就是出三两个接口,爽完了事。
ZX576
2023-12-13 18:41:40 +08:00
@RockChinQ

“提供一种最佳实践抹平程序员水平间的差异就好了” -> 不太可能,以 django 为例,且不说 type hints ,写接口用 def 还是 class 都无法统一起来。

纵观 V 站、知乎之类的问答,各类程序员(包括 Pythonista )愿意把 Python 代码当维护的工程来写的都很少。社区自己也摆烂,type hints 和 asyncio 出了多少年了,django 至今不充分跟进。django 的结构就是大工程应用的解法,奈何 django 自己不努力,而现在流行的 fastapi 基于 starlette 改,人家就没想做大工程,定位就是出三两个接口,爽完了事。

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

https://tanronggui.xyz/t/998195

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

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

© 2021 V2EX