新工作安排我维护旧 Python 项目,但是本身对 Python 抵触,咋办?

2023-07-05 22:56:12 +08:00
 IamBack
原因:
1. 需要对 python 要从 0 学习,我目前更愿意用我熟悉的语言,比如 java/golang 。
2. 以前临时小项目用 python ,吃过 python 的苦, 主要是如下苦:
2.1 相对于 java/golang 强类型语言。python 是弱类型,且函数是动态的。具体指:IDE 提示的方法/函数,在运行期间才知道存不存在,别人代码能用这个函数,我的代码用不了。IDE 编写代码期间看不出来。 (大家有没有好办法解决?)
2.2 各种依赖库/环境:冲突,下不下来,下载不完全 等等 (不完全是网络问题,找隔壁主用 python 的测试同学也没搞定)


求助:
1. 如何跟老板沟通? 若不得不接,如何委婉的告诉老板自己的倾向性,这次接后,下次不要再给我类似项目了。
2. 如何心理建设? 如何克服之前遇到的苦
2640 次点击
所在节点    问与答
36 条回复
so1n
2023-07-05 22:57:46 +08:00
首先 Python 不是弱类型,其次你可以尝试用你喜欢的语言去重构
lululau
2023-07-05 23:01:39 +08:00
换语言级别的技术栈属于调岗了,你说不接受调岗不就完了;我也非常不喜欢 Python ,与 Ruby 相比毫无美感可言,我宁可用 Java 也不想用 Python
dcsuibian
2023-07-05 23:20:08 +08:00
mark ,要换我我也挺难受。
不过#1 说的没错,python 确实是强类型,不过是动态类型。像 javascript 那种莫名其妙地隐式转换的才叫弱类型。
mineralsalt
2023-07-06 00:27:20 +08:00
用 python 捏着鼻子写写脚本就算了, 用这玩意开发项目打死我都不干, 最烦的就是缩进这种写法
lixinrui000
2023-07-06 06:58:30 +08:00
作为曾经的 C++语法爱好者,我觉得楼主爱上 Python 可能和我一样只差一个 mypy ,用 mypy annotate 类型后,我再也没有遇到过 Python 运行时类型错误。...甚至可以直接静态编译 Python 代码
lixinrui000
2023-07-06 07:03:27 +08:00
库的问题的话,我写了一个生成检查和修改 requirements.txt 的小工具,解决 pip freeze 导出扁平化、数量过多、不能处理跨平台的问题来处理: https://gist.github.com/hongwen000/a8d682b6d0be20af1f0c98087f2117d3
murmur
2023-07-06 08:03:50 +08:00
python 我认为还是按弱类型算,因为他定义变量可以推导出类型,但是函数声明里没类型,所以还是按弱

扯远了,钱给够啥都好说,新人刚开始都是帮别人擦屁股的
Eiden
2023-07-06 08:50:24 +08:00
六字真言
zmQAQ
2023-07-06 08:52:53 +08:00
离职
IamBack
2023-07-06 08:54:10 +08:00
@so1n 应该换不了语言重构, 其依赖的基架平台是 python 写的
xiyou007
2023-07-06 08:54:38 +08:00
py 5 年了,也写过 Java 和 Go 。 我的感受是 py 挺自由了,但就是太自由了。而 Go 和 Java 再怎么写 也不会想 py 那么能写烂。

另外 op 可以考虑外包给我 (嘿嘿
coolair
2023-07-06 09:19:02 +08:00
你可以外包给我,然后你摸鱼。
CodeCodeStudy
2023-07-06 09:19:37 +08:00
领导安排做啥就做啥,多学一门语言也不是什么坏事
Martin123123
2023-07-06 09:23:22 +08:00
1. 自身没有这方便经验,帮不到你不好意思
2. 得看项目内容还有具体 python 版本,以及项目运行的方式
2.1 python 是强类型语言,不管是从其他语言转到 python 或本身就开发 python 的,都建议标注变量类型,比如
def func(data: str) -> bool:
return True
即便是泛型也建议标注好
2.2 建议使用现代化一些的依赖管理工具,比如 poetry 之类的,不过这个主要还是看项目,大部分情况下 requirements 中的版本除了明确版本的包比如使用 django 的场景,其他并不需要指定版本,让 pip 自己选择依赖就好

如果可以的话,python 相关的项目还是建议通过 docker 的方式去开发、部署,毕竟 linux 、mac 下集成了 python ,对于新手而言,管理不同的 python 版本踩坑的可能性很高
Martin123123
2023-07-06 09:26:47 +08:00
对了,补充一下,如果 python 版本较为落后,可以通过 typing 的方式去补充「 python 是动态类型,大部分情况下如果没有明确标注类型,对于 IDE 或自己开发都会带来灾难」

文档:
https://docs.python.org/zh-cn/3.9/library/typing.html
BingoXuan
2023-07-06 09:27:50 +08:00
用 typing hint+stub ,就能让 ide 提示犹如 golang interface 那般。

如果 ide 没办法理解代码作出提示,说明代码真的写得太烂了。用 go 或 java 是因为语法规则和编译器阻挡了一部分问题
paopjian
2023-07-06 09:29:58 +08:00
面向工资编程
X21541
2023-07-06 09:32:10 +08:00
把这件事看作学习新语言,又有工资拿的机会。抵触 python ,这个想法就是一种内耗。
clf
2023-07-06 09:33:18 +08:00
你只要接了,后面都会找你。我司也有类似情况,目前是小部分的修改可以,大块的东西不如考虑迁移。
xiaoxinxiaobai
2023-07-06 10:22:10 +08:00
接外包,价格好商量

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

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

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

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

© 2021 V2EX