从工程的角度深入理解 Python
- 最重要的一点就是,从工程的角度思考学习,以实用为出发点,多练习、多阅读、多做项目,这样才能有质的提高。
- 新手学习新的语言总是只会啃书练习,还难以上手;而有经验的同事则不同,他们能花很短的时间看完基础语法,然后找行家去了解一些重难点、易错点,最后亲自动手完成一个项目,达到融会贯通的效果。这样下来,可能几周时间就掌握得差不多了。牢牢掌握一门编程语言及其学习方法,是日后在所有领域深造的根基。
- Python 可以运用在数据处理、Web 开发、人工智能等多个领域,它的语言简洁、开发效率高、可移植性强,并且可以和其他编程语言(比如 C++)轻松无缝衔接。
如何逐步突破,成为 Python 高手?
不同语言,需融会贯通
- 其实,如果你在学一门语言的时候多阅读、多练习、多思考,你就会发现,不同语言都是类似的。
- 编程语言本就是人类控制计算机的指令,语法规则等方面自然大同小异。
- 在原有基础上,学习一门新的编程语言,其实也没有那么难,你首先要做到的是明确区分。
- 比如,在学习 Python 的条件与循环语句时,多回忆一下其他语言的语法是怎样的。
- 再如,遇到 Python 中的字符串相加时,你能分析出它的复杂度吗?再联想到其他语言,比如 Java 中字符串相加的复杂度,它们之间有什么相同点、又有什么区别呢?
- 除了能够明确区分语言的不同点,我们还要能联系起来灵活运用。
- 比如,最典型的“编程语言两问”:你了解你学过的每种编程语言的特点吗?
- 你能根据不同的产品需求,选用合适的编程语言吗?举个例子,Python 的优点之一是特别擅长数据分析,所以广泛应用于人工智能、机器学习等领域,如机器学习中 TensorFlow 的框架,就是用 Python 写的。
- 但是涉及到底层的矩阵运算等等,还是要依赖于 C++ 完成,因为 C++ 的速度快,运行效率更高。
- 事实上,很多公司都是这样,服务器端开发基于 Python,但底层的基础架构依赖于 C++。
- 这就是典型的“不同需求选用不同语言”。
- 毕竟,你要明白,哪怕只是几十到几百毫秒的速度差距,对于公司、对于用户体验来说都是决定性的。
第一步:大厦之基,勤加练习
- 千万不要等到把教材上所有东西都学完了才开始,因为到那时候你会发现,前面好不容易记住的一堆东西似乎又忘记了。计算机科学是一门十分讲究实战的学科,因此越早上手练习,练得越多越勤,就越好。
- 不过,到底什么叫做必要的基础呢?以 Python 为例,如果你能够理解变量间的赋值、基本的数据类型、条件与循环语句、函数的用法,那么你就达到了第一步的底线标准,应该开始在课下多多练习了。
- 在做这个小项目的过程中,你可能会遇到不少问题。我的建议是,遇到不懂的问题时,多去 Stack Overflow 上查询,这样你还能阅读别人优秀的代码,借鉴别人的思路,对于你的学习肯定大有帮助。
第二步:代码规范,必不可少
- 诚然,学习编程讲究快和高效。但是,与此同时,请一定不要忽略每一种语言必要的编程规范。
- 在你自己刚开始写代码练习时,你可以不写单元测试。
- 但总不能几百行的代码却没有一个函数,而是从头顺序写到尾吧?
- 你可以省略一些可有可无的注释,但总不能把很多行代码全部并到一行吧?
- 变量和函数的命名虽有一定的随意性,但一定要有意义。
第三步:开发经验,质的突破
- 想要真正熟练地掌握 Python 或者是任何一门其他的编程语言,拥有大中型产品的开发经验是必不可少的。因为实战经验才能让你站得更高,望得更远。
- 比如我们每天都在用搜索引擎,但你了解一个搜索引擎的服务器端实现吗?
- 这是一个典型的面向对象设计。
- 你需要定义一系列相关的类和函数,需要从产品需求、代码复杂度、效率以及可读性等多个方面考虑。
- 同时,上线后还要进行各种优化等等。
Jupyter Notebook 为什么是现代 Python 的必学技术?
- Jupyter 已经成为一个几乎支持所有语言,能够把软件代码、计算输出、解释文档、多媒体资源整合在一起的多功能科学运算平台。
- Jupyter 的优点
- 整合所有的资源
- 在真正的软件开发中,上下文切换占用了大量的时间。
- 举个例子你就很好理解了,比如你需要切换窗口去看一些文档,再切换窗口去用另一个工具画图等等。这些都是影响生产效率的因素。
- Jupyter 通过把所有和软件编写有关的资源全部放在一个地方,解决了这个问题。
- 当你打开一个 Jupyter Notebook 时,就已经可以看到相应的文档、图表、视频和相应的代码。
- 这样,你就不需要切换窗口去找资料,只要看一个文件,就可以获得项目的所有信息。
- 交互性编程体验
- 在机器学习和数学统计领域,Python 编程的实验性特别强,经常出现的情况是,一小块代码需要重写 100 遍,比如为了尝试 100 种不同的方法,但别的代码都不想动。
- Jupyter Notebook 引进了 Cell 的概念,每次实验可以只跑一小个 Cell 里的代码。
- 并且,所见即所得,在代码下面立刻就可以看到结果。
- 零成本重现结果