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

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

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


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

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

    另外 op 可以考虑外包给我 (嘿嘿
    coolair
        12
    coolair  
       296 天前
    你可以外包给我,然后你摸鱼。
    CodeCodeStudy
        13
    CodeCodeStudy  
       296 天前
    领导安排做啥就做啥,多学一门语言也不是什么坏事
    Martin123123
        14
    Martin123123  
       296 天前
    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  
       296 天前
    对了,补充一下,如果 python 版本较为落后,可以通过 typing 的方式去补充「 python 是动态类型,大部分情况下如果没有明确标注类型,对于 IDE 或自己开发都会带来灾难」

    文档:
    https://docs.python.org/zh-cn/3.9/library/typing.html
    BingoXuan
        16
    BingoXuan  
       296 天前
    用 typing hint+stub ,就能让 ide 提示犹如 golang interface 那般。

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

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

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

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


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