首页   注册   登录
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python 学习手册
Python Cookbook
Python 基础教程
Python Sites
PyPI - Python Package Index
http://www.simple-is-better.com/
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
拉钩
V2EX  ›  Python

中了 Python 的毒

  •  
  •   herozem · 273 天前 · 7415 次点击
    这是一个创建于 273 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #PHP 是最好的语言#

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

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

    只有肥到 Pythonic 世界…老老实实在在的搬砖~
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   974 人在线   最高记录 4019   ·  
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.1 · 23ms · UTC 23:16 · PVG 07:16 · LAX 15:16 · JFK 18:16
    ♥ Do have faith in what you're doing.
    沪ICP备16043287号-1