python的可怕之处(为什么我觉得Python烂的要死)

点击上方 "程序员小乐"关注, 星标或置顶一起成长

每天凌晨00点00分, 第一时间与你相约

每日英文

I have passed your heart, not I don't want to stay, but you would not shelter.

我曾路过你的心,不是我不想停留,而是你不肯收留。

每日掏心话

理想和现实总是有差距的,幸好还有差距,不然,谁还稀罕理想。

来自:公众号 新智元 | 责编:乐乐

python的可怕之处(为什么我觉得Python烂的要死)(1)

程序员小乐(ID:study_tech)第 827 次推文 图片来自百度

往日回顾:Spring 和 Spring Boot 之间到底有啥区别?

正文

【导读】作为机器学习程序员的首选编程语言,Python成为世界范围内最受大学生欢迎的编程语言。但凡事有例外,近日,一位开发者讲述了他无法忍受Python的8大原因,引发网友大量回应。

作为机器学习程序员的首选编程语言,Python近年来可谓如日中天,人气连年暴涨。由于AI热潮持续不断,Python在今年更是取代Java,成为世界范围内最受大学生欢迎的编程语言。很多机器学习领域的教材、文章和技术文档,给出代码时会以Python作为示例语言,可见Python受欢迎程度之高。

Python具有上手快、门槛低、语法结构相对简单等优点,初学者易入门、老手的二次学习成本也低,再加上机器学习任务上优势独具,受热捧简直是水到渠成的事。

但凡事有例外,东西再好也不可能人人都爱。

近日在hackerfactor上,一位名叫Neal Krawetz的人就撰文,指出了自己无法忍受Python的八大原因,把Python里里外外吐槽了一遍。

文章列出了作者认为Python存在重大缺陷的八条理由,包括版本兼容性问题、安装版本混乱、在程序关键字命名规则、常用库命名规则上独树一帜,且缺乏一致性、赋值传递混乱、本地文件命名策略易出错等。

总之一通下来,把Python贬得够呛。这篇文章在当下Python大热的背景下可算是一朵“奇葩“了。看多了Python赞歌是不是有点审美疲劳了?不妨换换口味。

原因1:版本之间不兼容

安装Linux后,那么它很可能默认会安装多个版本的Python,可能有Python2和Python3,甚至更多零零碎碎的版本,如3.5或3.7。

这是有原因的:Python3与Python2不完全兼容,一些其他版本在这方面的缺陷也足够明显——向后兼容性不足(backwards compatibility,也称为向下兼容性)。

所以Ubuntu同时安装了Python2和Python3,因为这些版本的核心功能是不同的。

python的可怕之处(为什么我觉得Python烂的要死)(2)

  • 版本不兼容不是bug,是特性;我就觉得没人维护的东西就不应该再用了

  • 用虚拟环境安装不同的python版本而不是安装在同一个环境下

  • 现代编辑器默认TAB=4个空格。你也不需要非得用4个空格,但要确保一致性

  • 官方的文档特别好,真的。要是标准库里没有,翻翻The Hitchhiker’s Guide to Python这本书

  • 我觉得Python的命名风格特别好,更直观。list不是数组,就是序列;关联数组明明就是dict

  • 二进制字符串前面加个b,是因为Unicode规范中,1字节≠1byte

  • 这样做的好处是,我可以随时随地引用一个东西,而不需要每次都去复制粘贴原来的名字

  • 同上

  • notacoward

    • 1和2是同一个问题,有关整个生态,跟语言本身无关。因为这类社区维护的项目都是不同的人花费宝贵的业余时间去维护,每个人都有每个人的习惯和价值观

    • 这个只能说你自己太个性了。我们大家保持默认的统一风格,对于别人维护起来明显更容易

    • C/C 的include很难处理模块接口

    • list和array不是一个东西。下一个

    • 每个语言都有自己的一套转换方式。Python可能不是最完美的,但是其他的更差,呵呵

    • 对象引用效率更高。尤其是当变量名不一致的时候,你直接复制会有问题。但是你引用一下,就好多了

    • 最好不要把自己的程序命名成标准库里的程序或者模块的名字

    folkrav

    首先要纠正下你,PyPy和PyPi发音不一样。前一个是“派派”,后一个是“派-屁-爱”

    其次,名称很重要吗?第三方诶大哥,啥名字都可以出现诶大哥。你就能保证你起名的时候,能做到信达雅吗大哥?

    jaxtellerSoA

    我就不明白了。用缩进来定义作用域,怎么就不好了?多一目了然啊!别的语言{}里面不也得缩进吗?再说了,你就不觉得按住shift才能打出{}很难受吗?

    riskable

    我跟C粉儿讨论过“缩进vs括号”这个问题。他说没有括号怎么能轻松找出作用域呢?

    标准Py粉儿答案是:啊原来你们喜欢括号是因为你们的代码坏习惯啊。

    我想了想,可能这么问更恰当:假如不使用文本编辑器/IDE来突出显示括号或它们之间的空间,你还是坚持用括号不用缩进吗?

    我估计他终于get到我的点了,说:啊我明白了,你之所以用缩进是因为Python编辑器太烂了啊!真可怜。

    Sign。

    “我也不喜欢Python”

    cutety

    Python是我上手的第一个语言,但我以后再也不会用了。当然作者的这些问题,在我看来都不是问题,个人习惯而已。

    • 包管理模式简直烂到家。那么多包管理器可以借鉴啊,可以让pip不那么烂啊

    • 就不能有个标准包管理器有个标准manifest吗?又不会怀孕!

    twunde

    安装确实是个让人头疼的问题。是的很多人提到了安装虚拟环境,venv/virtualenv。Ruby有RVM,可以轻松的在同样环境下使用不同版本。我宁愿挨个给Ruby,PHP,Perl…做环境配置,也不愿意给Python配置。

    nicoburns

    哦!多行Lambda!我在JS里的最爱。Python里,没!有!了!

    setpatchaddress

    我从1.5就开始用Python了。缩进来表示语句块,是我最最最不能忍受的!

    dbcurtis

    我就喜欢C那种的括号,不喜欢Python的缩进方式。

    colanderman

    我觉得Python最大的问题其实是内部模型对于它的意图而言过于复杂了,就是一个有经验的开发者都很难理解,别说初学者了。

    你怎么看?

    参考链接:

    hackerfactor.com/blog/index.php?/archives/825-8-Reasons-Python-Sucks.html

    news.ycombinator.com/item?id=18706174

    欢迎在留言区留下你的观点,一起讨论提高。如果今天的文章让你有新的启发,学习能力的提升上有新的认识,欢迎转发分享给更多人。

    猜你还想看

    阿里、腾讯、百度、华为、京东最新面试题汇集

    Java之异常处理,看这篇就对了!

    Java IO使用的四种模式

    (三)SpringBoot SpringCloud —— 高可用的Eureka注册中心

    关注订阅号「程序员小乐」,收看更多精彩内容嘿,你在看吗?

    ,

    免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

      分享
      投诉
      首页