# Python简介

Python是那些可以声称既*简单*又*强大的*罕见语言之一。您会惊喜地发现，专注于问题的解决方案而不是您编程语言的语法和结构是多么容易。

Python的官方介绍是：

> Python是一种易于学习，功能强大的编程语言。它具有高效的高级数据结构和面向对象编程的简单而有效的方法。Python优雅的语法和动态类型及其解释特性使其成为大多数平台上许多领域的脚本编写和快速应用程序开发的理想语言。

我将在下一节中更详细地讨论大多数这些功能。

### 名字背后的故事 <a href="#story-behind-the-name" id="story-behind-the-name"></a>

Python语言的创建者Guido van Rossum在英国广播公司节目“Monty Python的飞行马戏团”之后命名这种语言。他并不特别喜欢通过将长长的身体缠绕在它们周围并将它们碾碎来杀死动物以获取食物的蛇。

### Python的特点 <a href="#features-of-python" id="features-of-python"></a>

#### 简单 <a href="#simple" id="simple"></a>

Python是一种简单而简约的语言。阅读一个好的Python程序感觉就像阅读英语，虽然英语非常严格！Python的这种伪代码特性是它最大的优势之一。它允许您专注于问题的解决方案而不是语言本身。

#### 简单易学 <a href="#easy-to-learn" id="easy-to-learn"></a>

正如您将看到的，Python非常容易上手。如前所述，Python具有非常简单的语法。

#### 自由开源 <a href="#free-and-open-source" id="free-and-open-source"></a>

Python是*FLOSS*（Free /Libré和开源软件）的一个例子。简单来说，您可以自由分发此软件的副本，阅读其源代码，对其进行更改，并在新的免费程序中使用它。FLOSS基于共享知识的社区的概念。这就是为什么Python如此优秀的原因之一 - 它已被创建并且不断被一个只想看到更好的Python的社区所改进。

#### 高级语言 <a href="#high-level-language" id="high-level-language"></a>

当您使用Python编写程序时，您永远不必担心低级细节，例如管理程序使用的内存等。

#### 手提 <a href="#portable" id="portable"></a>

由于其开源特性，Python已被移植到（即改为使其工作）许多平台。如果您足够小心避免任何与系统相关的功能，那么所有Python程序都可以在任何这些平台上运行，而无需任何更改。

您可以在GNU / Linux，Windows，FreeBSD，Macintosh，Solaris，OS / 2，Amiga，AROS，AS / 400，BeOS，OS / 390，z / OS，Palm OS，QNX，VMS，Psion，Acorn RISC上使用Python OS，VxWorks，PlayStation，Sharp Zaurus，Windows CE和PocketPC！

您甚至可以使用像[Kivy](http://kivy.org/)这样的平台为您的计算机*以及* iPhone，iPad和Android 创建游戏。

#### 解读 <a href="#interpreted" id="interpreted"></a>

这需要一些解释。

用C或C ++等编译语言编写的程序使用带有各种标志和选项的编译器从源语言（即C或C ++）转换为计算机使用的语言（二进制代码，即0和1）。运行程序时，链接器/加载程序软件将程序从硬盘复制到内存并开始运行。

另一方面，Python不需要编译为二进制文件。您只需直接从源代码*运行*该程序。在内部，Python将源代码转换为称为字节码的中间形式，然后将其转换为计算机的本机语言，然后运行它。所有这些，实际上，使得使用Python变得更加容易，因为您不必担心编译程序，确保正确的库被链接和加载等。这也使您的Python程序更加便携，因为您可以将您的Python程序复制到另一台计算机上它就可以了！

#### 面向对象 <a href="#object-oriented" id="object-oriented"></a>

Python支持面向过程的编程以及面向对象的编程。在*面向过程的*语言中，程序是围绕程序或函数构建的，这些程序或函数只是可重用的程序。在*面向对象*语言中，程序是围绕组合数据和功能的对象构建的。Python有一种非常强大但简单的OOP方式，特别是与C ++或Java等大型语言相比时。

#### 扩展 <a href="#extensible" id="extensible"></a>

如果您需要一段关键代码来快速运行或者希望某些算法不能打开，您可以用C或C ++编写程序的那一部分，然后在Python程序中使用它。

#### 嵌入式 <a href="#embeddable" id="embeddable"></a>

您可以在您的C / C ++程序中嵌入Python，为程序的用户提供*脚本*功能。

#### 广泛的图书馆 <a href="#extensive-libraries" id="extensive-libraries"></a>

Python标准库确实非常庞大。它可以帮助您做各种事情，包括正则表达式，文档生成，单元测试，线程，数据库，Web浏览器，CGI，FTP，电子邮件，XML，XML-RPC，HTML，WAV文件，加密，GUI（图形用户界面），和其他系统相关的东西。请记住，只要安装了Python，所有这些都可用。这被称为Python *包含*的*电池*哲学。

除了标准库之外，您还可以在[Python Package Index中](http://pypi.python.org/pypi)找到各种其他高质量的库。

#### 摘要 <a href="#summary" id="summary"></a>

Python确实是一种令人兴奋和强大的语言。它具有正确的性能和功能组合，使用Python编写程序既有趣又简单。

### Python 3与2 <a href="#python-3-versus-2" id="python-3-versus-2"></a>

如果您对“Python版本2”和“Python版本3”之间的区别不感兴趣，则可以忽略此部分。但请注意您使用的是哪个版本。本书是为Python 3版编写的。

请记住，一旦您正确理解并学习使用一个版本，您就可以轻松地了解差异并使用另一个版本。困难的部分是学习编程和理解Python语言本身的基础知识。这是我们在本书中的目标，一旦您实现了这一目标，您可以根据自己的情况轻松使用Python 2或Python 3。

有关Python 2和Python 3之间差异的详细信息，请参阅：

* [Python 2的未来](http://lwn.net/Articles/547191/)
* [将Python 2代码移植到Python 3](https://docs.python.org/3/howto/pyporting.html)
* [编写在Python2和3下运行的代码](https://wiki.python.org/moin/PortingToPy3k/BilingualQuickRef)
* [支持Python 3：深入的指南](http://python3porting.com/)

### 程序员说的话 <a href="#what-programmers-say" id="what-programmers-say"></a>

您可能会发现有趣的是阅读像ESR这样的伟大黑客对Python的看法：

* *Eric S. Raymond*是“The Cathedral and the Bazaar”的作者，也是创造*开源*这个词的人。他说[Python已成为他最喜欢的编程语言](http://www.python.org/about/success/esr/)。这篇文章是我第一次使用Python的真正灵感。
* *Bruce Eckel*是着名的“Thinking in Java”和“Thinking in C ++”一书的作者。他说，没有哪种语言能让他比Python更富有成效。他说Python可能是唯一一种专注于让程序员更轻松的语言。阅读[完整的访谈](http://www.artima.com/intv/aboutme.html)了解更多详情。
* *Peter Norvig*是着名的Lisp作者和谷歌搜索质量总监（感谢Guido van Rossum指出这一点）。他说[编写Python就像写伪代码一样](https://news.ycombinator.com/item?id=1803815)。他说Python一直是Google不可或缺的一部分。您可以通过查看[Google Jobs](http://www.google.com/jobs/index.html)页面来实际验证此声明，该页面列出了Python知识作为软件工程师的要求。


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://python.zhangxiong.net/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
