Back to Programming Languages

See Also pipMoinMoinSupervisor

Python(Programming Language)

Python是一种面向对象、直译式的电脑编程语言,具有近二十年的发展历史。它包含了一组功能完备的标准库,能够轻松完成很多常见的任务。它的语法简单,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

Python经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。

Python的官方解释器是CPython,该解释器用C语言编写,是一个由社区驱动的自由软件,目前由Python软件基金会管理。

Python支持命令式程序设计、面向对象程序设计、函数式编程、面向侧面的程序设计、泛型编程多种编程范式。

1. History

Python的创始人为吉多·范罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。之所以选中Python作为程序的名字,是因为他是BBC电视剧——蒙提·派森的飞行马戏团(Monty Python's Flying Circus)的爱好者。ABC是由吉多参加设计的一种教学语言。就吉多本人看来,ABC这种语言非常优美和强大,是专门为非专业程序员设计的。但是ABC语言并没有成功,究其原因,吉多认为是非开放造成的。吉多决心在Python中避免这一错误,并获取了非常好的效果,完美结合了C和其他一些语言。

1.1. 标准

2. 应用范围

2.1. Web Applications

Python作为一门强大的脚本语言,能够适应快速原型和较大项目的制作,它被广泛用于web应用程序的开发中。

Web Servers and Python

2.1.1. WSGI

Web服务网关接口(Web Server Gateway Interface,简称WSGI)是一种在web服务器和Python web应用程序或框架之间的标准接口。通过标准化web服务器和Python web应用程序或框架之间的行为和通信,WSGI使得编写可移植的的Python web代码变为可能,使其能够部署在任何 WSGI可用的 web 服务器上。PEP 3333是WSGI的定义文档。

2.1.1.1. WSGI Servers

uWSGI是一个非常强大的Python Web应用服务器,并且uWSGI还能用来构建全栈式的主机服务,包含进程管理、进程监控和其他功能,适用于多种编程语言和协议 - 包括Python和WSGI。uWSGI既能当作独立的web路由器来运行,也能运行在一个完整web服务器(比如Nginx或Apache)之后。对于后者,web服务器可以基于 uwsgi 协议 配置uWSGI和应用的操作。uWSGI的web服务器支持允许动态配置Python、传递环境变量以及进一步优化。

Gunicorn (Green Unicorn,绿色独角兽) 是一个WSGI服务器,用来支持Python应用。它是Ruby的 Unicorn 服务器的Python实现。Unicorn被设计成轻量级的、易于使用的、并使用许多UNIX特性(UNIX idioms)。Gunicorn不是被设计成面向互联网的 – 它被设计成运行于Nginx之后,缓存慢请求,以及关注其他重要的内容。在 Gunicorn help 能找到 Nginx + Gunicorn 的简单配置步骤。

2.1.2. Frameworks

一些Web框架,如Django、Pyramid、web2py、Zope、Flask等,可以让程序员轻松地开发和管理复杂的Web程序。

2.1.2.1. Web.py

Web.py是一个针对Python的web框架,简单而又强大。Web.py中没有向导或者模板网站,必须从头构建。它不提供管理工具。Web.py是Aaron Swartz的作品,是他Reddit.com工作时开发出来的。

2.2. GUI开发

Python本身包含的Tkinter库能够支持简单的GUI开发。但是越来越多的Python程序员选择wxPython或者PyQt等GUI包来开发跨平台的桌面软件。使用它们开发的桌面软件运行速度快,与用户的桌面环境相契合。通过PyInstaller还能将程序发布为独立的安装程序包。

2.3. 操作系统

在很多操作系统里,Python是标准的系统组件。大多数Linux发布版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在终端机下直接运行Python。有一些Linux发布版的安装器使用Python语言编写,比如Ubuntu的Ubiquity安装器、Red Hat Linux和Fedora的Anaconda安装器。Gentoo Linux使用Python来编写它的Portage包管理系统。Python标准库包含了多个调用作业系统功能的库。通过pywin32这个第三方软件包,Python能够访问Windows的COM服务及其它Windows API。使用IronPython,Python程序能够直接调用.Net Framework。

2.4. 服务器脚本

OpenStack/AWS都大量的使用了Python,前者本身就是用Python开发的,后者提供的客户端也基本由Python组成;还有Fabric之类的服务器管理框架。

2.5. 智能手机

3. Installation

通常来说,OS X自带的Python版本更适合用于学习而不是开发。因为版本低于Python官网发布的官方最新稳定版本。

特别要提到如Setuptools, Pip和Virtualenv这样的工具——它们将简化安装和使用Python第三方库的流程。

3.1. Setuptools & Pip

setuptools 和 pip 是最重要的两个Python第三方软件包。一旦安装了它们,就可以通过一条指令下载、安装和卸载可获取到的 Python应用包,还可以轻松地将这种网络安装的方式加入到自己开发的Python应用中。

3.2. Virtual Environments

虚拟环境工具(virtualenv)通过为不同项目创建专属的Python虚拟环境,以实现其依赖的库独立保存在不同的路径。 这解决了“项目X依赖包版本1.x,但项目Y依赖包版本为4.x”的难题, 并且维持全局的site-packages目录干净、易管理。

也可使用 virtualenvwrapper 更轻松地管理你的虚拟环境。

4. 学习

写这篇wiki的时候,Python自己的Tutorial和Standard Library文档已经成为了学习Python最好的入门和日常帮助文档了

4.1. The Python Tutorial

4.1.1. 4. More Control Flow Tools

4.1.2. 5. Data Structures

Python数据结构

4.1.3. 6. Modules

4.1.4. 7. Input and Output

4.1.5. 8. Errors and Exceptions

Python的错误与异常

4.1.6. 9. Classes

Python类的使用

4.2. The Python Standard Library

4.2.1. Built-in Types

Python Built-Ins: Python Built-in Functions/Constants/Types/Exceptions

4.2.2. String Services

4.2.3. Data Types

4.2.4. Numeric and Mathematical Modules

4.2.5. File and Directory Access

10. File and Directory Access

4.2.6. File Formats

13. File Formats

  1. csv — CSV File Reading and Writing
  2. ConfigParser — Configuration file parser

  3. robotparser — Parser for robots.txt
  4. netrc — netrc file processing
  5. xdrlib — Encode and decode XDR data
  6. plistlib — Generate and parse Mac OS X .plist files

Microsoft Excel (tm) File Processing

4.2.7. Cryptographic Services

4.2.8. Operating System Services

15. Generic Operating System Services/16. Optional Operating System Services

4.2.9. Interprocess Communication and Networking

subprocess — Subprocess management: This module allows you to spawn processes, connect to their input/output/error pipes, and obtain their return codes. This module intends to replace several older modules and functions:

4.2.10. Internet Data Handling

4.2.10.1. email — An email and MIME handling package

https://docs.python.org/2/library/email.html

4.2.10.2. json — JSON encoder and decoder

JSON encoder and decoder

4.2.11. Graphical User Interfaces with Tk

4.2.12. Development Tools

25. Development Tools

4.2.13. Debugging and Profiling

26. Debugging and Profiling

4.2.14. Python Runtime Services

28. Python Runtime Services

4.2.15. Unix Specific Services

4.3. Scripts

5. Tools Powered by Python

5.1. Create a Simple HTTP Server by Command

refer to http://docs.python.org/2/library/simplehttpserver.html

$ python -m SimpleHTTPServer 8000

5.2. 其它

画图: matplotlib

5.2.1. 使用pydoc文档工具

$ cd /srv/www/moin/pythonenv/
$ pydoc MoinMoin.macro.RecentChanges |cat
2008-01-25 11:58:02,527 INFO MoinMoin.log:151 using logging configuration read from built-in fallback in MoinMoin.log module
2008-01-25 11:58:02,527 INFO MoinMoin.log:157 Running MoinMoin 1.5.2 release code from ./MoinMoin
Help on module MoinMoin.macro.RecentChanges in MoinMoin.macro:

NAME
    MoinMoin.macro.RecentChanges - MoinMoin - RecentChanges Macro

FILE
    /srv/www/moin/pythonenv/MoinMoin/macro/RecentChanges.py

DESCRIPTION
...
FUNCTIONS
    cmp_lines(first, second)
    
    format_comment(request, line)
...
DATA
    Dependencies = ['time']

可以直接访问其中的函数或变量:

$ pydoc MoinMoin.macro.RecentChanges.Dependencies |cat
2008-01-25 12:04:40,659 INFO MoinMoin.log:151 using logging configuration read from built-in fallback in MoinMoin.log module
2008-01-25 12:04:40,659 INFO MoinMoin.log:157 Running MoinMoin 1.9.7 release code from ./MoinMoin
Help on list in MoinMoin.macro.RecentChanges object:

MoinMoin.macro.RecentChanges.Dependencies = class list(object)
 |  list() -> new empty list
 |  list(iterable) -> new list initialized from iterable's items
 |  
 |  Methods defined here:
 |  
 |  __add__(...)
...

-k参数用来查找关键字:

$ pydoc -k results
2008-01-25 14:03:16,981 INFO MoinMoin.log:151 using logging configuration read from built-in fallback in MoinMoin.log module
2008-01-25 14:03:16,981 INFO MoinMoin.log:157 Running MoinMoin 1.5.2 release code from ./MoinMoin
MoinMoin.search.results - MoinMoin - search results processing

-p启动web服务展示文档

$ pydoc -p 8088
pydoc server ready at http://localhost:8088/

-w生成html格式的文档

$ pydoc -w MoinMoin.search.results 
2008-01-25 14:27:23,494 INFO MoinMoin.log:151 using logging configuration read from built-in fallback in MoinMoin.log module
2008-01-25 14:27:23,494 INFO MoinMoin.log:157 Running MoinMoin 1.5.2 release code from MoinMoin
wrote MoinMoin.search.results.html

6. Development

6.1. 编码规范

6.2. 开发框架

7. Reference

MainWiki: Python (last edited 2009-01-31 00:05:10 by twotwo)