# Python 3 简介

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

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

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

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

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

## 我为什么要在乎？

如果您尚未确信要学习 Python，那么我只能告诉您一件事：大公司使用 Python 进行开发。 这些大公司中有一些是：Google，Dropbox 和迪士尼。

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

所有这些都是因为 Python 是一种易于学习且易于阅读的编程语言。

## Python 2 和 Python 3 之间的区别

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

由于 Python 3 是使用新版本号引入的，因此它在 Python 2 之间必须有所区别。因此，让我们简要介绍一下在开发 Python 2 和 Python 3 时可能遇到的主要区别：

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

### 在运行时确定 Python 版本

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

```java
import sys
if sys.version_info[0] != 3:
   print("Wrong Python version used")
   exit(-1)
```

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

## 安装 Python

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

也许您已经注意到您已经在计算机上安装了 Python。 要验证这一点，您必须输入

```java
python
```

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

```java
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.
>>>
```

此消息在第一行包含版本信息。 如果仔细看，您会发现大多数时候都是 python 2.7（至少它已经安装了 Macs）。

要查看是否已安装 Python 3，请输入

```java
python3
```

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

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

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

就是这样。 现在是时候启动 Python 解释器外壳了，可以确定安装正常：

```java
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.
>>>
```

您应该会看到与此类似的内容，并显示正确的 Python 版本号。

## 使用其他模块

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

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

### 用`pip`安装

某些模块可通过 [PyPI](https://pypi.python.org) （Python 包索引）使用。

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

让我们继续并安装`lxml`模块，稍后当我告诉您有关使用 Python 处理 XML 时将需要用到。

```java
$ 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
```

如果您想知道为什么我使用`pip3`而不是`pip`，则原因非常简单：Python 2 具有自己的`pip`，并且如果您为其他 Python 版本安装模块，则显然其他版本不可用。

要查看`pip`命令是否适合您，您可以查找其版本并查看其修改的 Python 版本：

```java
$ 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)
```

上面的代码片段告诉我，我必须使用`pip3`，因为它是 Python 3.4 的正确版本。

### 定位模块

有时，您没有要在 Python 包索引中使用的模块（例如，您从 GitHub 获得了代码），或者您有一个结构化的项目，其中包含一些文件夹和 Python 脚本文件，而您需要在另一个文件中使用一个文件。

在这种情况下，您可以使用以下经验法则：模块是不带`.py`扩展名的 Python 脚本文件的名称，文件夹必须在脚本名称前添加点号（`.`）作为分隔符。

### 命名导入的模块

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

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

幸运的是，有一个解决方案：您可以为导入的模块甚至导入的部件（功能，类）指定自定义名称。

```java
>>> 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
```

