Python 这门语言太简单了,简单到随便一个人,学了半小时就能写出代码,写了几个月代码就敢在简历上写自己熟练掌握 Python。或者有人以为 Python 等于 pandas,Python 等于 AI。
目前市面上,讲 Python 入门的课程很多、讲基于 Python 实现的 AI、数据分析、后端的课程也很多。但讲 Python 进阶的课程不多,讲如何避免 Python 坑点的也不多。
但是,如果大家看一下很多人写的 Python 代码,就会发现,一是代码丑。二是乱用各种特性和语法糖,不知道从哪里学来几个高级用法,就到处乱用炫技
很多人写出的代码,仅仅是一个能够工作,“当前”能产生正确结果的代码。这个代码毫无优化可言,速度慢,不稳定,不知道未来哪天突然就不能用了。
有很多人吐槽 Python 速度慢,有全局解释器锁限制了代码的性能,或者 Python 是动态语言,变量可以随便赋值导致项目难以维护。。。
但实际上,我想说,写出能够工作的 Python 代码,这很容易,但是把 Python 用对又是另一回事。很多人把 Python 的特性当做 Bug,把自己的无知当做语言的缺陷。很多人滥用 Python 的特性,然后怪Python 本身太灵活难以维护。
常见的问题
我们来看几个例子。我刚刚加入网易的时候,当时有一个做数据仓库的高级工程师,给他带的实习生说,Python 有全局解释器锁,所以它的多线程实际上是单线程,不需要考虑并发冲突。这种说法是对全局解释器锁的一种彻底误解,这样说的人,根本不知道全局解释器锁作用在哪里。
还有人代码里面大量的 try … except,一层套一层。这样一来,它的代码运行以后绝对不会报错。看起来非常稳定。但是经常运行一段时间,输出的结果就跟预期相差甚远。而且根本不知道哪里出了问题。
有的同学电脑里面第一个 Python 是使用 Anaconda 安装的。后来因为其他原因要安装另外的 Python 环境。导致原来的环境不能正常使用。打开 PyCharm 后,发现全是红色波浪线。使用 pip 安装一个第三方库,明明已经安装成功了,在命令行交互环境已经可以正常导入了,但是在 PyCharm 里面一运行就报错,提示缺少这个第三方库。
还有的同学,不知道做了什么操作,导致 Python 自带的模块无法正常导入,或者导入以后,缺少了对应的功能,一运行就报错。