一些个人的浅见,想听听大家的看法或者实践。
最近两年做了几个比较实用也稍微有点热度的项目,在某些组件重构了很多次之后发现:
最近浅看了一下 Spring Boot 教程之后,发现 Spring Boot 能较好地解决了上述几个问题(自动装配、MVC 分层、统一配置文件),这让新手能很轻松地构建一个架构行得通的程序,对比之下 Python 由于语法过于灵活,容易写得很乱。然后就思考一下几个问题:
第一次发帖,希望能听听其他人的见解。
1
RockChinQ OP 可否有这样一个框架能让 Python 新生少走弯路?使 Python 适应较大的应用开发?目前是否有这个需求呢?
|
2
yyfearth 2023-12-07 04:00:11 +08:00
Spring Boot 也没有 Desktop GUI 的吧
Spring 倒是和 Django 有点类似 |
3
dayeye2006199 2023-12-07 05:22:01 +08:00
django 表示 那我是干什么的?
如果 django 都嫌臃肿的话,那 sprintboot 是啥? python 很多时候不需要 DI ,因为语言特性足够灵活,完全可以绕过去。 |
4
sordidclown 2023-12-07 08:42:19 +08:00
结合我个人的体验来说,OP 的这个问题的一部分是不是能归结为 Python 缺乏像 Java 一样通用的工程化准则?但是在类型注解出现之前,鸭子类型的语言本身就不太适合做工程,所以其实最后的落点反而是用 Python 做工程的人相对较少(?),相对来说,分享这方面经验的也少,最后都需要自己摸索。但其实如果要学习如何组织,其实可以看看开源的库,或者从其他语言借鉴(狗头)。之前找这方面的时候找到了一个项目: https://pyloong.github.io/pythonic-project-guidelines/
顺带一提,如果想同时 Web 和 GUI 开发,题主可以考虑下 Flet ,现在最新版已经提供了 Webview ,大部分情况下应该够用了。 |
5
RockChinQ OP @dayeye2006199 Django 似乎可以满足部分需求,我再去了解一下。我的意思是,在构建一定规模的应用时,Python 的高灵活性是一项缺点,因为一种需求可能的实现不唯一,造成可读性较差,受程序员个人水平影响严重。如果有一个统一的框架,提供一种最佳实践抹平程序员水平间的差异就好了。我再去了解一下 Django 。
|
6
RockChinQ OP @sordidclown 对的,我和你的想法基本一致,我现在写函数参数、类成员都会习惯加上 type hints 。我去看看你给的链接。并不是要做 web 和 gui ,一开始的 po 出的框架只是想说明目前的框架都比较关注单独一个组件的功能。
|
7
flmn 2023-12-07 10:41:57 +08:00
Django
|
8
roundgis 2023-12-07 16:59:46 +08:00
要在大項目應用 python 。對從業人員有一定要求。
|
11
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 改,人家就没想做大工程,定位就是出三两个接口,爽完了事。 |
12
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 改,人家就没想做大工程,定位就是出三两个接口,爽完了事。 |