中了 Python 的毒 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
herozem
V2EX    Python

中了 Python 的毒

  •  
  •   herozem 2018 年 3 月 13 日 9991 次点击
    这是一个创建于 2859 天前的主题,其中的信息可能已经有所发展或是发生改变。

    最近开始用 Go 拆分原有的单体应用。单体应用是用 Python 写的。

    感受:写惯了 Python 真的不想写 Go 了。。。。Java ?更不想写了

    Go 写 proxy 这类与具体业务无关的还是挺爽的。

    第 1 条附言    2018 年 3 月 13 日
    哈哈哈,好像又引发了语言大战
    73 条回复    2018-03-14 19:01:49 +08:00
    l1093178
        1
    l1093178  
       2018 年 3 月 13 日
    毕竟 Golang 渣渣抽象能力,就没几个好用的轮子
    orangeade
        2
    orangeade  
       2018 年 3 月 13 日 via Android
    写 Kotlin ?
    gs139
        3
    gs139  
       2018 年 3 月 13 日
    Golang 把残缺说成精炼
    ostholz
        4
    ostholz  
       2018 年 3 月 13 日
    @orangeade
    Kotlin 真心舒服, 可能是跟 Swift 很相近吧, 写起了很舒心.
    Java? 看都不爱看一眼
    gamexg
        5
    gamexg  
       2018 年 3 月 13 日
    python 怎么解决重构的问题?
    项目比较大的时候改一个结构真的不知道会影响多少地方...
    之后就觉得还是编译型的比较舒服,至少编译时就会报错,而不是运行时挂掉。

    当然测试只覆盖了主要流程,一些非重要的没覆盖。
    ila
        6
    ila  
       2018 年 3 月 13 日 via Android
    @gamexg django 和 flask 的蓝图都是解决之道
    amaranthf
        7
    amaranthf  
       2018 年 3 月 13 日   3
    写 python,写的时候确实比 go 要舒服。
    但是……写 go,可能写 300 行,然后运行,一遍过;写 python,写 100 行,可能要调 3 次,有 2 次运行异常,1 次运行结果不正确……
    gs139
        8
    gs139  
       2018 年 3 月 13 日
    @gamexg 编译型写起来是比较有安全感,但同时失去了灵活性,动态语言两三行代码就完成的事,编译型的可能得写好几个类。 鱼与熊掌不可兼得吧。
    huclengyue
        9
    huclengyue  
       2018 年 3 月 13 日 via Android
    @ostholz 不能同意更多。。
    qfdk
        10
    qfdk  
    PRO
       2018 年 3 月 13 日 via iPhone
    python 全是坑 版本各种不兼容 极力鄙视 非科班最爱; go 那玩意儿编译出来错都不知道咋错的 语法不喜欢....; js 还好 明白了原理 npm 还是好用
    simple2025
        11
    simple2025  
       2018 年 3 月 13 日 via iPhone
    @qfdk python 可以用 py2 呀,总比 nodejs 到处锁版本好吧
    qfdk
        12
    qfdk  
    PRO
       2018 年 3 月 13 日 via iPhone
    @chenqh #11 macos 现在自带就是 3 了…… 我同事为了改版本 居然把系统库删了换 结果悲剧了…… node 只要不是 ubuntu 源的 0.10 几乎没啥压力 npm i n -g ; n latest 不解释
    simple2025
        13
    simple2025  
       2018 年 3 月 13 日 via iPhone
    @qfdk 233
    l1093178
        14
    l1093178  
       2018 年 3 月 13 日   2
    @amaranthf 不写单元测试那谁都没办法 (就算是静态语言不写单元测试你也很难保证没有逻辑 bug
    lhx2008
        15
    lhx2008  
       2018 年 3 月 13 日
    感觉还是写静态语言舒服,按接口写实现就好了,IDE 直接把文档糊你脸上,也不用操心各种神奇的返回值。
    shiroming
        16
    shiroming  
       2018 年 3 月 13 日 via Android
    @qfdk 有 pyenv。。。。
    qfdk
        17
    qfdk  
    PRO
       2018 年 3 月 13 日
    @shiroming 这玩意倒是知道。。好像还有个 virtualenv 啥玩意儿的。 但是也是够恶心的。
    还有的问题就是 linux server 上面 没有 LC_ALL 设置也会报错 摊手。
    作为一个普通的用户来说 我不需要这么复杂的玩意儿。 日常看到 有 python 写的开源项目宁可造轮子也不拿来折腾自己
    lightening
        18
    lightening  
       2018 年 3 月 13 日
    要不楼主试试 Ruby ?
    Osk
        19
    Osk  
       2018 年 3 月 13 日 via Android
    动态一时爽。。。

    我现在写 python 都尽量把 type hints 加上,然而,python 3.5 以下的居然不支持,2333
    pabupa
        20
    pabupa  
       2018 年 3 月 13 日
    @Osk 不是我要喷你,是我非要喷你,,,,,动态怎么了??你遇到什么了???第二句话什么意义????
    likuku
        21
    likuku  
       2018 年 3 月 13 日
    @gamexg 严格单元测试覆盖,py 重构也不难
    likuku
        22
    likuku  
       2018 年 3 月 13 日
    @qfdk pyenv + virtualenv 不要太方便了,py3 已经自带了 virtualenv 功能,没必要为了个版本问题就动用 docker
    kikyous
        23
    kikyous  
       2018 年 3 月 13 日   2
    python 的依赖管理真的屎一样
    Paddington
        24
    Paddington  
       2018 年 3 月 13 日
    @kikyous 也没那么烂啦。有哪点是很想吐槽的么,我帮你看看现有的方案?
    shiroming
        25
    shiroming  
       2018 年 3 月 13 日 via Android
    @qfdk 没觉的有啥恶心,pyenv 管理 python 版本,virtualenv 创建虚环境隔离系统已安装的包,妥妥的
    kikyous
        26
    kikyous  
       2018 年 3 月 13 日 via Android   1
    @Paddington 你用过 ruby 的 bundler 吗?我感觉 ruby 处处都体现优雅

    python 的包管理据我所知都是基于虚拟环境的,把解释器和包放在一个指定的地方,先不说包和解释器不能共享的问题,就是每次都要激活一下虚拟环境就很烦

    而且一大堆工具 virtualenv, virtualenvwrapper, pipenv 但没一个真正好用的,python 在很多方面都是如此,解决方案一大堆,没一个顶用的,就像 web 框架一大堆,没一个能和 rails 有一战之力的
    justfortest
        27
    justfortest  
       2018 年 3 月 13 日
    要不试试 ruby ?噫?传进来的是什么东西?这个第三方库文档怎么没有提到这个方法?看源码是,ctrl+鼠标.....你是跳转到定义啊?黑人问号。。。
    di94sh
        28
    di94sh  
       2018 年 3 月 13 日
    @kikyous pipenv 了解一下..
    gs139
        29
    gs139  
       2018 年 3 月 13 日
    曾经为了用 C#解析一个结构复杂的 json,写了一大堆类,差点累到吐血。然而用 php 只需要一个 json_decode 函数。

    各有各的好处,不能光看到静态语言的好,却看不到动态语言的好。至于重构?我接的私活有重构的需求吗?
    ZoomQuiet
        30
    ZoomQuiet  
       2018 年 3 月 13 日
    是也乎,( ̄ ̄)
    PHP 是最好的语言...

    这时, 写点儿 PHP ,你就会从内心愿意写 go 了
    cuebyte
        31
    cuebyte  
       2018 年 3 月 13 日
    go 的抽象力都不如 java,主你真的 java?
    southwolf
        32
    southwolf  
       2018 年 3 月 13 日
    @ZoomQuiet 活捉一只大妈……话说大妈不是 py 吹么 23333
    Paddington
        33
    Paddington  
       2018 年 3 月 13 日
    @kikyous 好吧,对于你的回复我保持沉默,纯为喷而喷。
    congeec
        34
    congeec  
       2018 年 3 月 13 日 via iPhone
    @gamexg typing
    justinwu
        36
    justinwu  
       2018 年 3 月 14 日
    @gs139 C#有 dynamic 啊
    popbones
        37
    popbones  
       2018 年 3 月 14 日
    取决于你想花更多时间写代码还是跟多时间修 BUG
    xiaket
        38
    xiaket  
       2018 年 3 月 14 日
    @southwolf 大妈这明显是在黑 PHP 啊...
    parkcg
        39
    parkcg  
       2018 年 3 月 14 日 via iPhone
    有没有强静态解释型开发语言,谁知道的话推荐下
    BlockBlockBlock
        40
    BlockBlockBlock  
       2018 年 3 月 14 日 via iPhone   3
    没人提 typescript 嘛?

    动态语言搭配强类型,继承 js 所有动态特性,有强类型重构不会火葬场,还有软爹支持。
    araraloren
        41
    araraloren  
       2018 年 3 月 14 日
    @parkcg Perl6 ? gradual typing system
    tylerdurden
        42
    tylerdurden  
       2018 年 3 月 14 日
    作为安全工程师想进来洋洋洒洒的发表的观点,一件来才发现自己需要提高下语文水平。
    mikicomo
        43
    mikicomo  
       2018 年 3 月 14 日 via Android
    @qfdk 最新版 mac 还是 py2
    anubiskong
        44
    anubiskong  
       2018 年 3 月 14 日
    有没有试过 JS 啊~?
    toono
        45
    toono  
       2018 年 3 月 14 日
    @kikyous 那是因为你还用惯 pipenv,用起来跟用过的 cocoapods 体验差不多
    sagaxu
        46
    sagaxu  
       2018 年 3 月 14 日 via Android   1
    php 才是醉猴的语言
    archknight
        47
    archknight  
       2018 年 3 月 14 日   1
    又是一轮语言大战。。。
    parkcg
        48
    parkcg  
       2018 年 3 月 14 日
    @araraloren perl6 有点古老,目前主要使用 c# 和 php。
    gouchaoer
        49
    gouchaoer  
       2018 年 3 月 14 日 via Android
    php 最近也 tm 开始不兼容了,神烦
    OMGZui
        50
    OMGZui  
       2018 年 3 月 14 日
    @gouchaoer 哪里看的?
    gouchaoer
        51
    gouchaoer  
       2018 年 3 月 14 日 via Android
    araraloren
        52
    araraloren  
       2018 年 3 月 14 日
    @parkcg ... but the first stable release of Perl6 is at 2015 , and I like it

    sub foo($a) { } // accept any type

    sub foo(Str $a) { } // type constraint, will do static type checking

    sub foo($a where { * ~~ Int | Str }) { } // type constraint block
    JerseyCafe
        53
    JerseyCafe  
       2018 年 3 月 14 日
    静观其变-.-
    CommandZi
        54
    CommandZi  
       2018 年 3 月 14 日
    我投 Swift 一票,只是哀其不争(至少目前是的)。
    hotReady
        55
    hotReady  
       2018 年 3 月 14 日
    我是 Python,别爱我,你是得不到我的,哼
    wellsc
        56
    wellsc  
       2018 年 3 月 14 日 via iPhone
    单体应用有多大?超过 20 万行代码了嘛
    est
        57
    est  
       2018 年 3 月 14 日   1
    本来不想水这个帖子的看到 zq 大妈都来水了那我也赶紧水一发。

    用静态强类型语言没遇到运行时错误的,那是因为你的项目还不足够复杂。Golang 就只写个 RPC API 还能出错?

    任何足够复杂的项目都隐藏了一个 lisp 解释器实现鲁迅。
    jhdxr
        58
    jhdxr  
       2018 年 3 月 14 日
    @gouchaoer 你举的这个例子好像正好是 rfc 投票时全票通过的。。。我个人也很好奇
    ```
    count(5);
    count(null);
    $a=new StdClass;
    count($a);
    ```
    这几种 count 的用法有什么含义。。。
    gouchaoer
        59
    gouchaoer  
       2018 年 3 月 14 日
    @jhdxr 脚本语言就是这样的,如果你要精确我干嘛不去用 java ?
    lbp0200
        60
    lbp0200  
       2018 年 3 月 14 日
    @est +1
    SuperMild
        61
    SuperMild  
       2018 年 3 月 14 日
    Python 环境管理用 miniconda 就很好,既可以多个项目共用一个环境,有特别需要的项目又可以独立一个环境,使用方法又很简单直观。
    wupher
        62
    wupher  
       2018 年 3 月 14 日
    最近也开始写 Kotlin,确实太像 Swift 了,虽然没有 guard,不过也可以自己封装一个。

    可能骨子里还是最喜欢 Ruby,我还是更喜欢 Ruby 与 groovy。

    之前的代码大多以 groovy 编写,Java 是不想再碰了。
    tairan2006
        63
    tairan2006  
       2018 年 3 月 14 日
    pipenv 很好用啊,我不太喜欢 go,kotlin 和 swift 都很棒
    tr>
    strive
        64
    strive  
       2018 年 3 月 14 日
    @gouchaoer 感觉 php 正在往静态语言靠
    deadEgg
        65
    deadEgg  
       2018 年 3 月 14 日
    @kikyous virtualenv 好用的很
    deadEgg
        66
    deadEgg  
       2018 年 3 月 14 日
    @kikyous “解决方案一大堆,没一个顶用的”,没黑到点啊。干直白这么说不是胡吹八吹?理由呢
    l1093178
        67
    l1093178  
       2018 年 3 月 14 日
    @est Rust 的话,不用 unsafe 不用 unwrap panic 应该基本上能够避免运行时错误了(当然逻辑错误免不了
    Henry001
        68
    Henry001  
       2018 年 3 月 14 日
    PHP 是最好的语言...
    ray1888
        69
    ray1888  
       2018 年 3 月 14 日
    现在是根据需求去写各种语言,还是感觉这样比较好
    hbin
        70
    hbin  
       2018 年 3 月 14 日
    mornlight
        71
    mornlight  
       2018 年 3 月 14 日
    和你相反,现在更愿意写 Go 不愿意写 Python 了
    herozem
        72
    herozem  
    OP
       2018 年 3 月 14 日
    @mornlight RPC 还好,解析 JSON 解析的心情都不好了
    ZoomQuiet
        73
    ZoomQuiet  
       2018 年 3 月 14 日 via iPhone
    @southwolf 是也乎 ()

    #PHP 是最好的语言#

    就是我辈 Pythoneer 的共识啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊…

    PHP 好到无法忍受了啊啊啊啊啊啊啊啊

    只有肥到 Pythonic 世界…老老实实在在的搬砖~
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2683 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 09:56 PVG 17:56 LAX 01:56 JFK 04:56
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86