162.md 8.3 KB
Newer Older
W
wizardforcel 已提交
1
# Python 3 简介
W
init  
wizardforcel 已提交
2 3 4

> 原文: [https://javabeginnerstutorial.com/python-tutorial/an-introduction-to-python-3-2/](https://javabeginnerstutorial.com/python-tutorial/an-introduction-to-python-3-2/)

W
wizardforcel 已提交
5
在本文中,我将向您介绍 Python3。这是有关 Python 的系列文章的第一篇,旨在为您提供一个教程,您可以在其中开始学习 Python 并获得动手示例以简化学习工作。
W
init  
wizardforcel 已提交
6

W
wizardforcel 已提交
7
Python 是*高级**交互式**面向对象**解释*脚本语言。 它被设计为具有可读的源代码,并且在其他编程语言使用标点符号的情况下,它更频繁地使用英语关键字。
W
init  
wizardforcel 已提交
8 9 10

让我们看看每个定义隐藏在其名称后面的内容:

W
wizardforcel 已提交
11 12 13 14
*   **高级**:Python 易于开发人员阅读和编写。 当您深入到机器级别时,代码将变得更不易读了-最后,当计算机执行命令时,它只是一系列的 1 和 0。
*   **交互式**:Python 使您可以直接在解释器中进行编码,并且在您按回车键时将执行代码。
*   **面向对象**:Python 支持将信息封装到对象中的面向对象的开发风格。
*   **解释**:Python 在运行时由 Python 解释器处理,因此执行之前不需要任何编译。 这类似于 PHP 或 Perl 或 Shell 脚本。
W
init  
wizardforcel 已提交
15

W
wizardforcel 已提交
16
## 为什么要学习?
W
init  
wizardforcel 已提交
17

W
wizardforcel 已提交
18
如果您尚未确信要学习 Python,那么我只能告诉您一件事:大公司使用 Python 进行开发。 这些大公司中有一些是:Google,Dropbox 和迪士尼。
W
init  
wizardforcel 已提交
19

W
wizardforcel 已提交
20
这些公司各自以不同的方式使用 Python。 Google 的 Youtube 主要基于 Python; Google App Engine 的第一个版本是使用 Python 开发的,其想法是仅在平台上使用 Python。 Dropbox 从一开始就使用 Python 开发,当他们注意到他们使用 Python 代码库为 4000 万客户提供服务时。 迪士尼使用 Python 来推动其创作过程。 顺便说一句:NASA 在某些开发中也使用 Python。
W
init  
wizardforcel 已提交
21

W
wizardforcel 已提交
22
所有这些都是因为 Python 是一种易于学习且易于阅读的编程语言。
W
init  
wizardforcel 已提交
23

W
wizardforcel 已提交
24
## Python 2 和 Python 3 之间的区别
W
init  
wizardforcel 已提交
25

W
wizardforcel 已提交
26
当前有两个主要版本供开发人员使用:2 和 3。我将使用 Python 3.5,因为它是最新版本,几乎每个 Python 3 脚本都可以使用 Python 2 解释器执行。 我说这几乎是因为存在一些差异,需要增加新的主要版本号。
W
init  
wizardforcel 已提交
27

W
wizardforcel 已提交
28
由于 Python 3 是使用新版本号引入的,因此它在 Python 2 之间必须有所区别。因此,让我们简要介绍一下在开发 Python 2 和 Python 3 时可能遇到的主要区别:
W
init  
wizardforcel 已提交
29 30 31

*   整数除法
*   打印成为函数而不是语句
W
wizardforcel 已提交
32
*   字符串在 Python 3 中默认为 unicode
W
init  
wizardforcel 已提交
33 34
*   异常的提出和处理发生了变化
*   输入解析已更改
W
wizardforcel 已提交
35
*   `xrange`已被删除,范围像以前的`xrange`一样实现
W
init  
wizardforcel 已提交
36

W
wizardforcel 已提交
37
### 在运行时确定 Python 版本
W
init  
wizardforcel 已提交
38

W
wizardforcel 已提交
39
一种解决方案是在运行时确定 Python 版本并在用户使用错误版本执行脚本时退出应用。 为此,让我向您展示一个简单的代码。 现在,请看一下,您就会知道:您可以稍后回到本节中,根据所收集的知识进行修改。
W
init  
wizardforcel 已提交
40

W
wizardforcel 已提交
41
```py
W
init  
wizardforcel 已提交
42 43 44 45 46 47 48 49
import sys
if sys.version_info[0] != 3:
   print("Wrong Python version used")
   exit(-1)
```

或者,我们可以引发和异常-但在后面的文章中,当更详细地了解异常处理时,会更多地讨论这个问题。

W
wizardforcel 已提交
50
## 安装 Python
W
init  
wizardforcel 已提交
51

W
wizardforcel 已提交
52
Python 3.5 当前仅是候选版本。 这意味着不鼓励 Python 开发人员在生产环境中使用此版本-但计划于 9 月中旬推出该版本,因此在不久的将来会非常实际,并且候选发布版很可能包含最终版本。
W
init  
wizardforcel 已提交
53

W
wizardforcel 已提交
54
也许您已经注意到您已经在计算机上安装了 Python。 要验证这一点,您必须输入
W
init  
wizardforcel 已提交
55

W
wizardforcel 已提交
56
```py
W
init  
wizardforcel 已提交
57 58 59 60 61
python
```

在命令提示符下,然后按回车键。 如果已安装,则应显示以下消息:

W
wizardforcel 已提交
62
```py
W
init  
wizardforcel 已提交
63 64 65 66 67 68
Python 2.7.10 (default, Jun 10 2015, 19:42:47)
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
```

W
wizardforcel 已提交
69
此消息在第一行包含版本信息。 如果仔细看,您会发现大多数时候都是 python 2.7(至少它已经安装了 Macs)。
W
init  
wizardforcel 已提交
70

W
wizardforcel 已提交
71
要查看是否已安装 Python 3,请输入
W
init  
wizardforcel 已提交
72

W
wizardforcel 已提交
73
```py
W
init  
wizardforcel 已提交
74 75 76 77 78 79 80
python3
```

在命令提示符下,然后按回车键。 在大多数情况下,此版本尚未安装,因此让我们看一下如何安装。

您可以在中找到我安装的版本[](https://www.python.org/downloads/)

W
wizardforcel 已提交
81
因为基本的分布式版本几乎适用于所有平台,所以我建议您按照站点提供的安装说明进行操作;或者,如果您具有 Mac 或 Windows OS,则可以像我那样获得可执行安装程序,因此没有复杂的安装步骤。 如果您使用的是 Linux,那么您现在应该知道如何在系统上编译(或安装)扩展程序和软件。
W
init  
wizardforcel 已提交
82

W
wizardforcel 已提交
83
就是这样。 现在是时候启动 Python 解释器外壳了,可以确定安装正常:
W
init  
wizardforcel 已提交
84

W
wizardforcel 已提交
85
```py
W
init  
wizardforcel 已提交
86 87 88 89 90 91 92
python3
Python 3.4.2 (v3.4.2:ab2c023a9432, Oct 5 2014, 20:42:22)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
```

W
wizardforcel 已提交
93
您应该会看到与此类似的内容,并显示正确的 Python 版本号。
W
init  
wizardforcel 已提交
94 95 96 97 98 99 100

## 使用其他模块

有时,您不想重新发明轮子,因为您已经完成了它,或者找到了可以用于您的目的的模块。

在这种情况下,您可以导入包含所需功能的模块。 我们看到了如何使用位于同一文件夹中的自己的脚本来完成此操作。 但是,它如何与其他开发人员的脚本一起使用?

W
wizardforcel 已提交
101
### 用`pip`安装
W
init  
wizardforcel 已提交
102

W
wizardforcel 已提交
103
某些模块可通过 [PyPI](https://pypi.python.org) (Python 包索引)使用。
W
init  
wizardforcel 已提交
104

W
wizardforcel 已提交
105
可能您已经听说过`pip`命令。 它是“Python 安装程序包”或“Python 包安装器”或更多程序的缩写。 您也可以使用 on 版本。 您应该关心的主要事情是,使用`pip`可以通过一个命令安装模块及其依赖项。 如果您有更新版本的模块,也可以使用`pip`进行更新。
W
init  
wizardforcel 已提交
106

W
wizardforcel 已提交
107
让我们继续并安装`lxml`模块,稍后当我告诉您有关使用 Python 处理 XML 时将需要用到。
W
init  
wizardforcel 已提交
108

W
wizardforcel 已提交
109
```py
W
init  
wizardforcel 已提交
110 111 112 113 114 115 116 117 118
$ pip3 install lxml
Collecting lxml
Downloading lxml-3.4.4.tar.gz (3.5MB)
   100% |████████████████████████████████| 3.5MB 153kB/s
Installing collected packages: lxml
Running setup.py install for lxml
Successfully installed lxml-3.4.4
```

W
wizardforcel 已提交
119
如果您想知道为什么我使用`pip3`而不是`pip`,则原因非常简单:Python 2 具有自己的`pip`,并且如果您为其他 Python 版本安装模块,则显然其他版本不可用。
W
init  
wizardforcel 已提交
120

W
wizardforcel 已提交
121
要查看`pip`命令是否适合您,您可以查找其版本并查看其修改的 Python 版本:
W
init  
wizardforcel 已提交
122

W
wizardforcel 已提交
123
```py
W
init  
wizardforcel 已提交
124 125 126 127 128 129
$ pip -V
pip 7.0.3 from /usr/local/lib/python2.7/site-packages/pip-7.0.3-py2.7.egg (python 2.7)
$ pip3 -V
pip 1.5.6 from /Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages (python 3.4)
```

W
wizardforcel 已提交
130
上面的代码片段告诉我,我必须使用`pip3`,因为它是 Python 3.4 的正确版本。
W
init  
wizardforcel 已提交
131 132 133

### 定位模块

W
wizardforcel 已提交
134
有时,您没有要在 Python 包索引中使用的模块(例如,您从 GitHub 获得了代码),或者您有一个结构化的项目,其中包含一些文件夹和 Python 脚本文件,而您需要在另一个文件中使用一个文件。
W
init  
wizardforcel 已提交
135

W
wizardforcel 已提交
136
在这种情况下,您可以使用以下经验法则:模块是不带`.py`扩展名的 Python 脚本文件的名称,文件夹必须在脚本名称前添加点号(`.`)作为分隔符。
W
init  
wizardforcel 已提交
137 138 139

### 命名导入的模块

W
wizardforcel 已提交
140
如您所见,通过文件夹结构或长名称导入模块对于长期使用而言可能会成为问题。 我的意思是考虑以下几点:导入多处理。 在这种情况下,您每次都要键入`multiprocessing.something`才能获得所需的函数或类。
W
init  
wizardforcel 已提交
141 142 143

否则,当您有两个具有相同名称的模块或要从恰好具有相同名称的不同模块中导入两个方法时,可能会发生另一个问题。 在这种情况下将使用哪一个? 您如何同时使用两者?

W
wizardforcel 已提交
144
幸运的是,有一个解决方案:您可以为导入的模块甚至导入的部件(函数,类)指定自定义名称。
W
init  
wizardforcel 已提交
145

W
wizardforcel 已提交
146
```py
W
init  
wizardforcel 已提交
147 148 149 150 151 152 153 154 155
>>> import multiprocessing as mp # from now on you can use 'mp' instead of 'multiprocessing'
>>> from calendar import isleap
>>> from calendar import isleap as leap1 # 'leap1' has the same functionality than isleap
>>> isleap(2015)
False
>>> leap1(2016)
True
```