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-03-13 18:30:29 +08:00 · 9080 次点击
    这是一个创建于 2207 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

    各有各的好处,不能光看到静态语言的好,却看不到动态语言的好。至于重构?我接的私活有重构的需求吗?
    ZoomQuiet
        30
    ZoomQuiet  
       2018-03-13 23:37:48 +08:00
    是也乎,( ̄▽ ̄)
    PHP 是最好的语言...

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

    动态语言搭配强类型,继承 js 所有动态特性,有强类型重构不会火葬场,还有软爹支持。
    araraloren
        41
    araraloren  
       2018-03-14 08:21:19 +08:00
    @parkcg Perl6 ? gradual typing system
    tylerdurden
        42
    tylerdurden  
       2018-03-14 08:22:26 +08:00
    作为安全工程师想进来洋洋洒洒的发表的观点,一件来才发现自己需要提高下语文水平。
    mikicomo
        43
    mikicomo  
       2018-03-14 08:35:04 +08:00 via Android
    @qfdk 最新版 mac 还是 py2
    anubiskong
        44
    anubiskong  
       2018-03-14 08:47:41 +08:00
    有没有试过 JS 啊~?
    toono
        45
    toono  
       2018-03-14 08:56:16 +08:00
    @kikyous 那是因为你还用惯 pipenv😂,用起来跟用过的 cocoapods 体验差不多
    sagaxu
        46
    sagaxu  
       2018-03-14 08:56:48 +08:00 via Android   ❤️ 1
    php 才是醉猴的语言
    archknight
        47
    archknight  
       2018-03-14 08:58:47 +08:00   ❤️ 1
    又是一轮语言大战。。。
    parkcg
        48
    parkcg  
       2018-03-14 09:04:13 +08:00
    @araraloren perl6 有点古老,目前主要使用 c# 和 php。
    gouchaoer
        49
    gouchaoer  
       2018-03-14 09:14:22 +08:00 via Android
    php 最近也 tm 开始不兼容了,神烦
    OMGZui
        50
    OMGZui  
       2018-03-14 09:25:07 +08:00
    @gouchaoer 哪里看的?
    gouchaoer
        51
    gouchaoer  
       2018-03-14 09:26:31 +08:00 via Android
    araraloren
        52
    araraloren  
       2018-03-14 09:29:02 +08:00
    @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-03-14 09:43:05 +08:00
    静观其变-.-
    CommandZi
        54
    CommandZi  
       2018-03-14 09:54:16 +08:00
    我投 Swift 一票,只是哀其不争(至少目前是的)。
    toyuanx
        55
    toyuanx  
       2018-03-14 09:58:09 +08:00
    我是 Python,别爱我,你是得不到我的,哼
    wellsc
        56
    wellsc  
       2018-03-14 10:01:50 +08:00 via iPhone
    单体应用有多大?超过 20 万行代码了嘛
    est
        57
    est  
       2018-03-14 10:14:49 +08:00   ❤️ 1
    本来不想水这个帖子的看到 zq 大妈都来水了那我也赶紧水一发。

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

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

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

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

    #PHP 是最好的语言#

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

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

    只有肥到 Pythonic 世界…老老实实在在的搬砖~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3397 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 00:06 · PVG 08:06 · LAX 17:06 · JFK 20:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.