Python 3 基础与应用教程

Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。 Python 本身也是由诸多其他语言发展而来的,包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。 像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。 现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。

Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发。

教程说明

  • 网站的开发,是为宣传Python的应用,对很多的教程进行整理、汇编而成。教程内容基于 Python 3 环境运行;

  • 教程中内容皆通过 Jupyter Notebook 制作,保证代码能够正确无误地执行,并会不定时基于较新的运行环境进行更新;

  • 由于 Jupyter Notebook 的限制,一些需要使用图形界面的类库如 Tk GUI 、 PyQt(PySide) 未包含在本教程内;

  • 教程的内容参考与使用了大量已有的网站、图书中的内容,在维护过程中,会对内容进行修改与加工,尽量避免版权问题。

  • Python 2 已于2020年1月1日正式停止维护,并且使用的人越来越少,教程修改过程中涉及到其与版本 3 比较的一些地方会逐渐从教程中移除。

python语言的优点

  • 简单:Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样。它使你能够专注于解决问题而不是去搞明白语言本身。

  • 易学:Python极其容易上手,因为Python有极其简单的说明文档。

  • 速度快:Python 的底层是用 C 语言写的,很多标准库和第三方库也都是用 C 写的,运行速度非常快。

  • 免费、开源:Python是FLOSS(自由/开放源码软件)之一。使用者可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。

  • 高层语言:用Python语言编写程序的时候无需考虑诸如如何管理你的程序使用的内存一类的底层细节。

  • 可移植性:由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/2、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE、PocketPC、Symbian以及Google基于linux开发的android平台。

  • 解释性:一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。运行程序的时候,连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码运行 程序。在计算机内部,Python解释器把源代码转换成为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。这使得使用Python更加简单。也使得Python程序更加易于移植。

  • 面向对象:Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。

  • 可扩展性:如果需要一段关键代码运行得更快或者希望某些算法不公开,可以部分程序用C或C++编写,然后在Python程序中使用它们。

  • 可嵌入性:可以把Python嵌入C/C++程序,从而向程序用户提供脚本功能。

  • 丰富的库:Python标准库确实很庞大。它可以帮助处理各种工作,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其他与系统有关的操作。这被称作Python的“功能齐全”理念。除了标准库以外,还有许多其他高质量的库,如wxPython、Twisted和Python图像库等等。

  • 规范的代码:Python采用强制缩进的方式使得代码具有较好可读性。而Python语言写的程序不需要编译成二进制代码。

Python之应用

  • 系统编程:提供API(Application Programming Interface应用程序编程接口),能方便进行系统维护和管理,Linux下标志性语言之一,是很多系统管理员理想的编程工具。

  • 图形处理:有PIL、Tkinter等图形库支持,能方便进行图形处理。

  • 数学处理:NumPy扩展提供大量与许多标准数学库的接口。

  • 文本处理:python提供的re模块能支持正则表达式,还提供SGML,XML分析模块,许多程序员利用python进行XML程序的开发。

  • 数据库编程:程序员可通过遵循Python DB-API(数据库应用程序编程接口)规范的模块与Microsoft SQL Server,Oracle,Sybase,DB2,MySQL、SQLite等数据库通信。python自带有一个Gadfly模块,提供了一个完整的SQL环境。

  • 网络编程:提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。很多大规模软件开发计划例如Zope,Mnet 及BitTorrent. Google都在广泛地使用它。

  • Web编程:应用的开发语言,支持最新的XML技术。

  • 多媒体应用:Python的PyOpenGL模块封装了“OpenGL应用程序编程接口”,能进行二维和三维图像处理。PyGame模块可用于编写游戏软件。

  • pymo引擎:PYMO全称为python memories off,是一款运行于Symbian S60V3,Symbian3,S60V5, Symbian3, Android系统上的AVG游戏引擎。因其基于python2.0平台开发,并且适用于创建秋之回忆(memories off)风格的AVG游戏,故命名为PYMO。

  • 黑客编程:python有一个hack的库,内置了你熟悉的或不熟悉的函数,但是缺少成就感。

Python的开发环境

  • IDLE: Python内置IDE (随python安装包提供)

  • PyCharm: 由著名的JetBrains公司开发,带有一整套可以帮助用户在使用Python语言开发时提高其效率的工 具,比如调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制。此外,该IDE提供了一些高级功能,以用于支持Django框架下的专业Web开发。

  • Visual Code: 微软开发的编辑器

  • Sublime : 商业软件

  • Komodo和Komodo Edit:后者是前者的免费精简版

  • Spyder:安装Anaconda自带的高级IDE

  • PythonWin:ActivePython或pywin32均提供该IDE,仅适用于Windows

  • SPE(Stani’s Python Editor):功能较多的自由软件,基于wxPython

  • Ulipad:功能较全的自由软件,基于wxPython;作者是中国Python高手limodou

  • WingIDE:可能是功能最全的IDE,但不是自由软件(教育用户和开源用户可以申请免费key)

  • Eric:基于PyQt的自由软件,功能强大。全名是:The Eric Python IDE

  • DrPython

  • PyScripter: 使用Delphi开发的轻量级的开源Python IDE, 支持Python2.6和3.0。

  • PyPE: 一个开源的跨平台的PythonIDE。

  • bpython: 类Unix操作系统下使用curses库开发的轻量级的Python解释器。语法提示功能。

  • eclipse + pydev插件:方便调试程序

  • emacs:自带python支持,自动补全、refactor等功能需要插件支持

  • Vim: 最新7.3版编译时可以加入python支持,提供python代码自动提示支持

  • Visual Studio 2003 + VisualPython:仅适用Windows,已停止维护,功能较差

  • SlickEdit

  • Visual Studio 2010 + Python Tools for Visual Studio

  • TextMate

  • Netbeans IDE

  • ipython : 交互运行环境

另外,诸如Notepad++、EditPlus、UltraEdit等通用的程序员文本编辑器软件也能对Python代码编辑提供一定的支持,比如代码自动着色、注释快捷键等,但是否够得上集成开发环境的水平,尚有待评估。