为什么你应该学 Python ?

引言

第一次接触 Python 是在一节编程入门课上。其实,在此之前了解过它,所以在上课之前我对它的语法已经很熟悉了,但在上课之前我没有用它做过真正的项目。尽管对它没有太大兴趣,但我认为把它介绍给人们去学习编程还是很好的。我对它不是不喜欢,而是一种“无所谓”的态度。原因很简单:它里面有太多“魔法”。 C 和 Java 这些语言,对底层的行为描述的很清晰,Python 则完全相反。

另外,Python 结构松散:写大型复杂程序时,遇到规则严谨的程序结构体(比如每个文件一个公共类),比其他语言(比如 Java )要费些力气。但是,在这些方面 Python 给了你很大的自由。

另一件事是严格的编码风格和调试:因为Python 是解释型语言,查找问题不太容易:如果C 语言有语法错误,编译器会直接停止编译,但在解释型语言中,直到执行到问题行,问题才会被发现。试着在需要整数的时候传一个字符串?cc 会马上提醒你,Python 解释器却对此一点都不介意(虽然有工具可以发现这个问题,比如 mypy,但我讨论的是通用的Python)。我提到的这些问题是解释型语言的通病,并非 Python 独有,但这些是我不喜欢它的主要原因。

还有一个烦人的问题是强制缩进。我们老师(很优秀)认为这是好事情,因为“它强制我们形成简洁的代码风格”。确实如此,但还是有点烦,当代码没有按预期执行时,你分析代码想要找出 bug,它却无影无踪,过了很长时间之后你发现 if 语句那一行有一个多余的空格。

我曾经和同事聊过 Python,告诉他为什么我之前对这个语言不感冒,他笑着问我“问什么不喜欢Python呢?因为它读起来很像英语?”。是的。因为这个语言做了很多底层的工作,有时候会不清楚发生了什么。举个读文件的例子,假设你想一行一行读取文件内容并打印出来。C 会这么做:

python 这么做: