|
|
@@ -5,7 +5,7 @@
|
|
|
#### Python的历史
|
|
|
|
|
|
1. 1989年圣诞节:Guido von Rossum开始写Python语言的编译器。
|
|
|
-2. 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面又出现了Java和C#实现的版本Jython和IronPython,以及PyPy、Brython、Pyston等其他实现),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,同时提供了“列表”和“字典”等核心数据类型,同时支持以模块为基础的拓展系统。
|
|
|
+2. 1991年2月:第一个Python编译器(同时也是解释器)诞生,它是用C语言实现的(后面又出现了Java和C#实现的版本Jython和IronPython,以及PyPy、Brython、Pyston等其他实现),可以调用C语言的库函数。在最早的版本中,Python已经提供了对“类”,“函数”,“异常处理”等构造块的支持,同时提供了“列表”和“字典”等核心数据类型,同时支持以模块为基础来构造应用程序。
|
|
|
3. 1994年1月:Python 1.0正式发布。
|
|
|
4. 2000年10月16日:Python 2.0发布,增加了实现完整的[垃圾回收](https://zh.wikipedia.org/wiki/%E5%9E%83%E5%9C%BE%E5%9B%9E%E6%94%B6_(%E8%A8%88%E7%AE%97%E6%A9%9F%E7%A7%91%E5%AD%B8)),提供了对[Unicode](https://zh.wikipedia.org/wiki/Unicode)的支持。与此同时,Python的整个开发过程更加透明,社区对开发进度的影响逐渐扩大,生态圈开始慢慢形成。
|
|
|
5. 2008年12月3日:Python 3.0发布,它并不完全兼容之前的Python代码,不过因为目前还有不少公司在项目和运维中使用Python 2.x版本,所以Python 3.x的很多新特性后来也被移植到Python 2.6/2.7版本中。
|
|
|
@@ -27,18 +27,18 @@ Python的优点很多,简单的可以总结为以下几点。
|
|
|
Python的缺点主要集中在以下几点。
|
|
|
|
|
|
1. 执行效率稍低,因此计算密集型任务可以由C/C++编写。
|
|
|
-2. 代码无法加密,但是现在的公司很多都不是卖软件而是卖服务,这个问题会被淡化。
|
|
|
+2. 代码无法加密,但是现在很多公司都不销售卖软件而是销售服务,这个问题会被淡化。
|
|
|
3. 在开发时可以选择的框架太多(如Web框架就有100多个),有选择的地方就有错误。
|
|
|
|
|
|
#### Python的应用领域
|
|
|
|
|
|
-目前Python在云基础设施、DevOps、网络爬虫开发、数据分析挖掘、机器学习等领域都有着广泛的应用,因此也产生了Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、图像识别和处理等一系列的职位。
|
|
|
+目前Python在Web应用开发、云基础设施、DevOps、网络爬虫开发、数据分析挖掘、机器学习等领域都有着广泛的应用,因此也产生了Web后端开发、数据接口开发、自动化运维、自动化测试、科学计算和可视化、数据分析、量化交易、机器人开发、图像识别和处理等一系列的职位。
|
|
|
|
|
|
### 搭建编程环境
|
|
|
|
|
|
#### Windows环境
|
|
|
|
|
|
-可以在[Python官方网站](https://www.python.org)下载到Python的Windows安装程序(exe文件),需要注意的是如果在Windows 7环境下安装需要先安装Service Pack 1补丁包(可以通过一些工具软件自动安装系统补丁的功能来安装),安装过程建议勾选“Add Python 3.6 to PATH”(将Python 3.6添加到PATH环境变量)并选择自定义安装,在设置“Optional Features”界面最好将“pip”、“tcl/tk”、“Python test suite”等项全部勾选上。强烈建议使用自定义的安装路径并保证路径中没有中文。安装完成会看到“Setup was successful”的提示,但是在启动Python环境时可能会因为缺失一些动态链接库文件而导致Python解释器无法运行,常见的问题主要是api-ms-win-crt\*.dll缺失以及更新DirectX之后导致某些动态链接库文件缺失,前者可以参照[《api-ms-win-crt\*.dll缺失原因分析和解决方法》]()一文讲解的方法进行处理或者直接在[微软官网](https://www.microsoft.com/zh-cn/download/details.aspx?id=48145)下载Visual C++ Redistributable for Visual Studio 2015文件进行修复,后者可以下载一个DirectX修复工具进行修复。
|
|
|
+可以在[Python官方网站](https://www.python.org)下载到Python的Windows安装程序(exe文件),需要注意的是如果在Windows 7环境下安装Python 3.x,需要先安装Service Pack 1补丁包(可以通过一些工具软件自动安装系统补丁的功能来安装),安装过程建议勾选“Add Python 3.6 to PATH”(将Python 3.6添加到PATH环境变量)并选择自定义安装,在设置“Optional Features”界面最好将“pip”、“tcl/tk”、“Python test suite”等项全部勾选上。强烈建议使用自定义的安装路径并保证路径中没有中文。安装完成会看到“Setup was successful”的提示。如果稍后运行Python程序时,出现因为缺失一些动态链接库文件而导致Python解释器无法工作的问题,可以按照后面说的方法加以解决。如果系统显示api-ms-win-crt\*.dll文件缺失,可以参照[《api-ms-win-crt\*.dll缺失原因分析和解决方法》]()一文讲解的方法进行处理或者直接在[微软官网](https://www.microsoft.com/zh-cn/download/details.aspx?id=48145)下载Visual C++ Redistributable for Visual Studio 2015文件进行修复;如果是因为更新Windows的DirectX之后导致某些动态链接库文件缺失问题,可以下载一个DirectX修复工具进行修复。
|
|
|
|
|
|
#### Linux环境
|
|
|
|
|
|
@@ -85,20 +85,26 @@ export PATH=$PATH:/usr/local/python37/bin
|
|
|
source .bash_profile
|
|
|
```
|
|
|
|
|
|
-#### MacOS环境
|
|
|
+#### macOS环境
|
|
|
|
|
|
-MacOS也是自带了Python 2.x版本的,可以通过[Python的官方网站](https://www.python.org)提供的安装文件(pkg文件)安装3.x的版本。默认安装完成后,可以通过在终端执行python命令来启动2.x版本的Python解释器,可以通过执行python3命令来启动3.x版本的Python解释器。
|
|
|
+macOS也自带了Python 2.x版本,可以通过[Python的官方网站](https://www.python.org)提供的安装文件(pkg文件)安装Python 3.x的版本。默认安装完成后,可以通过在终端执行python命令来启动2.x版本的Python解释器,可以通过执行python3命令来启动3.x版本的Python解释器。
|
|
|
|
|
|
### 从终端运行Python程序
|
|
|
|
|
|
#### 确认Python的版本
|
|
|
|
|
|
-在终端或命令行提示符中键入下面的命令。
|
|
|
+可以Windows的命令行提示符中键入下面的命令。
|
|
|
|
|
|
```Shell
|
|
|
python --version
|
|
|
```
|
|
|
-当然也可以先输入python进入交互式环境,再执行以下的代码检查Python的版本。
|
|
|
+或者是在Linux或macOS系统的终端中键入下面的命令。
|
|
|
+
|
|
|
+```Shell
|
|
|
+python3 --version
|
|
|
+```
|
|
|
+
|
|
|
+当然也可以先输入python或python3进入交互式环境,再执行以下的代码检查Python的版本。
|
|
|
|
|
|
```Python
|
|
|
import sys
|
|
|
@@ -109,7 +115,7 @@ print(sys.version)
|
|
|
|
|
|
#### 编写Python源代码
|
|
|
|
|
|
-可以用文本编辑工具(推荐使用Sublime、Atom、TextMate、VSCode等高级文本编辑工具)编写Python源代码并将其命名为hello.py保存起来,代码内容如下所示。
|
|
|
+可以用文本编辑工具(推荐使用Sublime、TextMate、Visual Studio Code等高级文本编辑工具)编写Python源代码并用py作为后缀名保存该文件,代码内容如下所示。
|
|
|
|
|
|
```Python
|
|
|
print('hello, world!')
|
|
|
@@ -123,6 +129,12 @@ print('hello, world!')
|
|
|
python hello.py
|
|
|
```
|
|
|
|
|
|
+或
|
|
|
+
|
|
|
+```Shell
|
|
|
+python3 hello.py
|
|
|
+```
|
|
|
+
|
|
|
### 代码中的注释
|
|
|
|
|
|
注释是编程语言的一个重要组成部分,用于在源代码中解释代码的作用从而增强程序的可读性和可维护性,当然也可以将源代码中不需要参与运行的代码段通过注释来去掉,这一点在调试程序的时候经常用到。注释在随源代码进入预处理器或编译时会被移除,不会在目标代码中保留也不会影响程序的执行结果。
|
|
|
@@ -156,29 +168,42 @@ IDLE是安装Python环境时自带的集成开发工具,如下图所示。但
|
|
|
|
|
|
#### IPython - 更好的交互式编程工具
|
|
|
|
|
|
-IPython是一种基于Python的交互式解释器。相较于原生的Python Shell,IPython提供了更为强大的编辑和交互功能。可以通过Python的包管理工具pip安装IPython和Jupyter,具体的操作如下所示。
|
|
|
+IPython是一种基于Python的交互式解释器。相较于原生的Python交互式环境,IPython提供了更为强大的编辑和交互功能。可以通过Python的包管理工具pip安装IPython和Jupyter,具体的操作如下所示。
|
|
|
|
|
|
```Shell
|
|
|
pip install ipython
|
|
|
```
|
|
|
|
|
|
-或者
|
|
|
+或
|
|
|
|
|
|
```Shell
|
|
|
-python -m pip install ipython
|
|
|
+pip3 install ipython
|
|
|
```
|
|
|
|
|
|
安装成功后,可以通过下面的ipython命令启动IPython,如下图所示。
|
|
|
|
|
|

|
|
|
|
|
|
-当然我们也可以通过安装Jupyter并运行名为notebook的程序在浏览器窗口中进行交互式代码编写操作。
|
|
|
+当然,我们也可以通过安装Jupyter工具并运行名为notebook的程序在浏览器窗口中进行交互式代码编写操作。
|
|
|
|
|
|
```Shell
|
|
|
pip install jupyter
|
|
|
+```
|
|
|
+
|
|
|
+或
|
|
|
+
|
|
|
+```Shell
|
|
|
+pip3 intall jupyter
|
|
|
+```
|
|
|
+
|
|
|
+然后执行下面的命令:
|
|
|
+
|
|
|
+```Shell
|
|
|
jupyter notebook
|
|
|
```
|
|
|
|
|
|
+
|
|
|
+
|
|
|

|
|
|
|
|
|
#### Sublime - 文本编辑神器
|
|
|
@@ -213,6 +238,8 @@ jupyter notebook
|
|
|
- Python PEP8 Autoformat - PEP8规范自动格式化插件。
|
|
|
- ConvertToUTF8 - 将本地编码转换为UTF-8。
|
|
|
|
|
|
+> 说明:事实上Visual Studio Code可能是更好的选择,它不用花钱并提供了更为完整和强大的功能。
|
|
|
+
|
|
|
#### PyCharm - Python开发神器
|
|
|
|
|
|
PyCharm的安装、配置和使用在[《玩转PyCharm》](../玩转PyCharm.md)进行了介绍,有兴趣的读者可以选择阅读。
|
|
|
@@ -221,34 +248,38 @@ PyCharm的安装、配置和使用在[《玩转PyCharm》](../玩转PyCharm.md)
|
|
|
|
|
|
### 练习
|
|
|
|
|
|
-1. 在Python交互环境中查看下面的代码结果,并将内容翻译成中文。
|
|
|
+1. 在Python交互环境中查看下面的代码结果,并试着将这些内容翻译成中文。
|
|
|
|
|
|
```Python
|
|
|
import this
|
|
|
-
|
|
|
- Beautiful is better than ugly.
|
|
|
- Explicit is better than implicit.
|
|
|
- Simple is better than complex.
|
|
|
- Complex is better than complicated.
|
|
|
- Flat is better than nested.
|
|
|
- Sparse is better than dense.
|
|
|
- Readability counts.
|
|
|
- Special cases aren't special enough to break the rules.
|
|
|
- Although practicality beats purity.
|
|
|
- Errors should never pass silently.
|
|
|
- Unless explicitly silenced.
|
|
|
- In the face of ambiguity, refuse the temptation to guess.
|
|
|
- There should be one-- and preferably only one --obvious way to do it.
|
|
|
- Although that way may not be obvious at first unless you're Dutch.
|
|
|
- Now is better than never.
|
|
|
- Although never is often better than *right* now.
|
|
|
- If the implementation is hard to explain, it's a bad idea.
|
|
|
- If the implementation is easy to explain, it may be a good idea.
|
|
|
- Namespaces are one honking great idea -- let's do more of those!
|
|
|
```
|
|
|
|
|
|
+ > 说明:当前键入上面的命令后会在交互式环境中看到如下所示的输出,这段内容被称为“Python之禅”,里面讲述的道理不仅仅适用于Python,也适用于其他编程语言。
|
|
|
+ >
|
|
|
+ > Beautiful is better than ugly.
|
|
|
+ > Explicit is better than implicit.
|
|
|
+ > Simple is better than complex.
|
|
|
+ > Complex is better than complicated.
|
|
|
+ > Flat is better than nested.
|
|
|
+ > Sparse is better than dense.
|
|
|
+ > Readability counts.
|
|
|
+ > Special cases aren't special enough to break the rules.
|
|
|
+ > Although practicality beats purity.
|
|
|
+ > Errors should never pass silently.
|
|
|
+ > Unless explicitly silenced.
|
|
|
+ > In the face of ambiguity, refuse the temptation to guess.
|
|
|
+ > There should be one-- and preferably only one --obvious way to do it.
|
|
|
+ > Although that way may not be obvious at first unless you're Dutch.
|
|
|
+ > Now is better than never.
|
|
|
+ > Although never is often better than \*right\* now.
|
|
|
+ > If the implementation is hard to explain, it's a bad idea.
|
|
|
+ > If the implementation is easy to explain, it may be a good idea.
|
|
|
+ > Namespaces are one honking great idea -- let's do more of those!
|
|
|
+
|
|
|
2. 学习使用turtle在屏幕上绘制图形。
|
|
|
|
|
|
+ > 说明:turtle是Python内置的一个非常有趣的模块,特别适用于让小朋友体会什么是编程,它最早是Logo语言的一部分,Logo语言是Wally Feurzig和Seymour Papert在1966发明的编程语言.
|
|
|
+
|
|
|
```Python
|
|
|
import turtle
|
|
|
|