1.3 Python
Python是一种面向对象的脚本语言,由位于阿姆斯特丹的国家数学与计算机科学研究所的Guido van Rossum开发,于1991年公开发布。
Python已迅速成为世界上最流行的编程语言之一。现在,它在教育领域和科学计算工作中特别受欢迎[1],并且最近已经超越R语言成为最流行的数据科学编程语言[2] [3]。以下是Python得以流行的一些原因,每个人都应该考虑学习Python[4] [5] [6]:
- Python是开源的、免费的,并且拥有庞大的开源社区。
- Python比C、C ++、C#和Java等语言更容易学习,新手和专业开发人员都能够快速掌握。
- Python比许多其他流行的编程语言具有更强的可读性。
- Python广泛应用在教育中[7]。
- Python提供大量的标准库和第三方开源库,提高了开发人员的工作效率,因此程序员可以更快地编写代码并以最少的代码执行复杂的任务。这一点将在1.4节详细说明。
- Python有大量免费的开源应用程序。
- Python在Web开发中很流行(例如Django、Flask)。
- Python支持面向过程的、函数式的、面向对象的等一系列流行的编程模式[8]。第4章将介绍函数式编程的特性,后续章节也将使用函数式编程。
- Python使用asyncio和async/await简化了并发编程,使用它可以编写单线程并发代码[9],大大简化了编写、调试和维护代码的过程[10]。
- Python拥有许多可以增强其性能的功能。
- Python既可以用于构建简单的脚本程序,也可以用于构建拥有大量用户的复杂应用程序,如Dropbox、YouTube、Reddit、Instagram和Quora等[11]。
- Python在人工智能领域很受欢迎,与数据科学的特殊关系是人工智能呈爆炸性增长的原因之一。
- Python在金融领域得到了广泛的应用[12]。
- Python程序员在多种学科领域中都有着广泛的就业市场,特别是面向数据科学的工作,而且Python编程人员是所有编程人员中收入最高的[13] [14]。
- Python和R是两种使用最广泛的数据科学语言。R语言是一种流行的应用于统计方面的应用程序和可视化的开源编程语言。
Anaconda Python发行版
本书使用Anaconda Python发行版,因为它易于在Windows、macOS和Linux上安装,并支持最新版本的Python、IPython解释器(在1.5.1节中介绍)和Jupyter Notebook(在1.5.3节中介绍)。除此之外,Anaconda还包括Python编程、数据科学中常用的软件包和库,使我们无须在软件安装上花费太多精力,可以专注于Python和数据科学。IPython解释器[15]可以帮助我们探索、发现和试验Python、Python标准库和大量的第三方库。
Python之禅
我们奉行Tim Peters的Python之禅,它总结了Python创建者Guido van Rossum的语言设计原则。可以使用import this
命令在IPython中查看这些原则。Python之禅是在PEP(Python Enhancement Proposal)20中定义的。“PEP是一个设计文档,用来为Python社区提供信息,或是用来描述一个Python的新特性[16]。”
[1] http://www.oreilly.com/ideas/5-things-to-watch-in-python-in-2017.
[2] https://www.kdnuggets.com/2017/08/python-overtakes-r-leader-analytics-data-science.html.
[3] https://www.r-bloggers.com/data-science-job-report-2017-r-passes-sas-but-python-leaves-them-both-behind/.
[4] https://dbader.org/blog/why-learn-python.
[5] https://simpleprogrammer.com/2017/01/18/7-reasons-why-you-should-learn-python/.
[6] https://www.oreilly.com/ideas/5-things-to-watch-in-python-in-2017.
[7] Tollervey, N., Python in Education: Teach, Learn, Program (O’Reilly Media, Inc., 2015).
[8] https://en.wikipedia.org/wiki/Python_(programming_language).
[9] https://docs.python.org/3/library/asyncio.html.
[10] https://www.oreilly.com/ideas/5-things-to-watch-in-python-in-2017.
[11] https://www.hartmannsoftware.com/Blog/Articles_from_Software_Fans/Most-Famous- Software-Programs-Written-in-Python.
[12] Kolanovic, M. and R. Krishnamachari, Big Data and AI Strategies: Machine Learning and Alternative Data Approach to Investing (J.P. Morgan, 2017).
[13] https://www.infoworld.com/article/3170838/developer/get-paid-10-programming-languages-to-learn-in-2017.html.
[14] https://medium.com/@ChallengeRocket/top-10-of-programming-languages-with-the- highest-salaries-in-2017-4390f468256e.
[15] https://ipython.org/.
[16] https://www.python.org/dev/peps/pep-0001/.