搜了下知乎居然没有一个吐槽Python的,吐槽js的倒挺多。作为近年在AI加持下大热的语言,我来斗胆吐槽一下,看看是否有人感同身受,也欢迎资深Python程序员反驳
start:
没有Let等局部变量声明(Scala有block,Haskell,Idris,Ocaml,es6的Let, js的 var),你无法可靠地在局部引入一个变量,一不小心就把全局变量改了。我觉得这个是最无法忍受的。
所有绑定都是可变变量,没有immutable
匿名函数不支持多行,这个还不如js。。
动态类型系统
面向对象方面,Class里边的self.xx不用先声明,可以随意引入。面向对象系统太简单,没有trait, interface这样的抽象机制,导致复杂一些的模块化以及Encapsulation无法实现。
由于动态类型,编辑器支持非常糟糕,难以代码补全(pycharm)
版本兼容问题:2和3不兼容是OK的,但是居然3.6和3.7的包都不互通(比如3.7就没法安装Tensorflow)
最重要的是,如果在机器学习行业,除了cpp,你将不可避免用到这门语言,不像js有很多选择(Scala Js,etc)。
还有评论中提到的缩进,完全可以做的更好,比如Haskell也是缩进语言,但是也支持使用括号和{}来Override
这里补充一下优点:用来代替Bash还是不错的,然后是反馈比较快,因为不用编译。numpy加分不少
目前看来对于静态类型强迫症的我来说,唯一的选择应该是idris to Python编译器,但是在上手之前,还是得硬着头皮用的
我认为Python的流行是因为它和R,MATLAB等数学统计以及数值计算的语言比较贴近,相对于他们python 还是顺手很多的。
吐槽完毕,明天还是得继续写Python
@CJex 关于py的其他黑点:各个编程语言都有哪些「黑点」?www.zhihu.com
由于我开始使用Python不久,里边可能有写得不对的地方,这是来自Python老司机的反馈:
某擁夜的黑貓:对《Python 是我用过最糟糕的语言之一》的回答zhuanlan.zhihu.com