V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
IamBack
V2EX  ›  问与答

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

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


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

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

    另外 op 可以考虑外包给我 (嘿嘿
    coolair
        12
    coolair  
       2023-07-06 09:19:02 +08:00
    你可以外包给我,然后你摸鱼。
    CodeCodeStudy
        13
    CodeCodeStudy  
       2023-07-06 09:19:37 +08:00
    领导安排做啥就做啥,多学一门语言也不是什么坏事
    Martin123123
        14
    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
        15
    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
        16
    BingoXuan  
       2023-07-06 09:27:50 +08:00
    用 typing hint+stub ,就能让 ide 提示犹如 golang interface 那般。

    如果 ide 没办法理解代码作出提示,说明代码真的写得太烂了。用 go 或 java 是因为语法规则和编译器阻挡了一部分问题
    paopjian
        17
    paopjian  
       2023-07-06 09:29:58 +08:00
    面向工资编程
    X21541
        18
    X21541  
       2023-07-06 09:32:10 +08:00
    把这件事看作学习新语言,又有工资拿的机会。抵触 python ,这个想法就是一种内耗。
    clf
        19
    clf  
       2023-07-06 09:33:18 +08:00
    你只要接了,后面都会找你。我司也有类似情况,目前是小部分的修改可以,大块的东西不如考虑迁移。
    xiaoxinxiaobai
        20
    xiaoxinxiaobai  
       2023-07-06 10:22:10 +08:00
    接外包,价格好商量
    kkhaike
        21
    kkhaike  
       2023-07-06 10:23:55 +08:00
    每个职业都应该学好 python ,之前我一个学金融的同学他们大学 python 课
    silencil
        22
    silencil  
       2023-07-06 10:25:28 +08:00
    我写脚本都是用 nodejs ,python 不是很爱用
    nothingistrue
        23
    nothingistrue  
       2023-07-06 10:34:19 +08:00
    不想干,或者干不了,都不是问题,直接说,千万不要捏着鼻子认了结果干到一半的时候说干不了。如果确实有原因不能拒绝,那就咬牙接下,之后是咬牙吃屎或者说一套干一套就看自己的能耐了。

    另,不存在这次接了下次就不给了,这次接了下次就必然再给,除非你这次办砸了。
    zuijiapangzi
        24
    zuijiapangzi  
       2023-07-06 11:17:12 +08:00
    是在不行,用 chatGPT 挺几天。
    BeautifulSoap
        25
    BeautifulSoap  
       2023-07-06 11:19:25 +08:00 via Android   ❤️ 1
    公司里只见过嫌弃 java 的,没怎么见过嫌弃 Python 的
    lambdaq
        26
    lambdaq  
       2023-07-06 11:28:41 +08:00
    抵触 python ?那赶紧拿起 rust 重写啊。
    iamperiod331www
        27
    iamperiod331www  
       2023-07-06 11:30:37 +08:00
    面向工资编程
    x7DnVcd9bA706oWp
        28
    x7DnVcd9bA706oWp  
       2023-07-06 11:42:53 +08:00
    既发工资,还给时间学习新技能挺好,技不压身嘛
    luoway
        29
    luoway  
       2023-07-06 12:29:24 +08:00
    除了你没别的开发吗,我觉得习惯写动态类型的开发更容易接受 python ,比如前端
    WebKit
        30
    WebKit  
       2023-07-06 12:31:01 +08:00 via Android
    @BeautifulSoap 那是因为正经公司没人用 python 不
    liantian
        31
    liantian  
       2023-07-06 12:34:49 +08:00 via iPhone
    现在要维护一个 py2 项目那可真太难受了…
    用自己最擅长的语言重构吧

    其实这种代码洁癖最好面试或简历说出来…就不会入职后再难受了。
    Trim21
        32
    Trim21  
       2023-07-06 12:36:24 +08:00 via Android
    Python3 倒是能缓解 2.1 的问题,Python2 就麻烦了…
    yingxiangyu
        33
    yingxiangyu  
       2023-07-06 12:40:38 +08:00
    你用的啥 ide ,用 pycharm 的话基本不会有这个问题
    BeautifulSoap
        34
    BeautifulSoap  
       2023-07-06 13:36:38 +08:00 via Android
    @WebKit 拿 Python 写服务器的确少,但项目代码不是只有服务器代码。很多公司里 Python 写的各种胶水脚本之类都是不计其数的。

    ps:java 在日本堪称人见狗嫌(当然嫌弃和最后用不用是另一回事)。我在的非 java 相关的项目组没一个人高兴转 java 的,宁学 kotlin 也不想学 java 那种。这几年公司强推 kotlin 后所有新项目都用 kotlin ,这才让很多人没那么抵触
    iyaozhen
        35
    iyaozhen  
       2023-07-06 13:41:52 +08:00
    多年 python 没懂你这个啥意思
    在运行期间才知道存不存在,别人代码能用这个函数,我的代码用不了。


    各种依赖库/环境:冲突,下不下来,下载不完全 等等
    这个如果你是 Windows 确实有点,但 Mac 完全没问题 pip venv 搞一下一把梭。就正常使用 我没感觉 pip install 和 go get 有啥区别
    IamBack
        36
    IamBack  
    OP
       2023-07-06 14:26:59 +08:00
    @iyaozhen 2.1 的问题,就是 IDE pycharm 提示了这个方法, 但是运行时报错没这个方法
    2.2 问题,估计还是与我装多版本,搞坏环境有关,这个先忽略吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2999 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 33ms · UTC 11:07 · PVG 19:07 · LAX 03:07 · JFK 06:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.