Python

创始人为Guido van Rossum。

Python在编程语言中的定位,很多大规模软件开发计划例如 Zope, Mnet 及 BitTorrent. Google都在广泛地使用它。

Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine来执行这些编译好的byte code。

这种机制的基本思想跟Java,.NET一致。不同的是,Python的Virtual Machine是一种距离真实机器的距离更远,抽象层次更高的 虚拟机。

基于C的Python编译出的字节码文件,通常是.pyc格式。

实际开发中,python常被昵称为
胶水语言,能够很轻松的把用其他语言制作的各种模块(尤其是C/C++)轻松地联结在一起。常见的一种应用情形是,使用python快速生成程序的原型骨骼
(有时甚至是程序的最终界面),然后对其中有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,速度要求非常高,就可以用C++重写。

Python设计理念

可扩充性新的内置模块(module)可用C 或 C++写成。也可为现成的模块加上Python的接口。
使用户避免过分的语法的羁绊 将精力主要集中到所要实现的程序任务上。

清晰。对于一个特定问题,只要有一种最好的方法来解决就好。

表述为:There should be one-- and preferably only one --obvious way to do it.

语法限制性强,不好的编程习惯(例如if语句的下一行不向右缩进)都不能通过编译。
这样有意的强制程序员养成良好的编程习惯。其中很重要的一项就是Python的缩进规则。

例如if语句:

       if age<21:
       print "You cannot buy wine!\n"
       print "But you can buy chewing gum.\n"
       print "this is outside if\n"

和其他大多数语言(如C)的区别就是,一个模块的界限,完全由每行的首字符在这一行的位置来决定的(而C语言是用一对花括号{}来明确的定出模块的边界的,与字符的位置毫无关系)。

这一点曾引起争议。自从C语言诞生,语法含义与字符的排列方式分离,曾被认为是程序语言的进步。不过不可否认的是,通过强制程序员们缩进(包括if,for和函数定义等所有需要使用模块的地方),Python确实使得程序更加清晰和美观。

另外Python在其他部分的设计上也坚持了清晰划一的风格,使得Python称为一门易读、易维护性,用途广泛的语言。


优点
简单————Python是一种代表简单主义思想的语言。它使你能够专注于解决问题而不是去搞明白语言本身。

易学————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!

解释性————这一点需要一些解释。Python语言写的程序不需要编译成二进制代码。可以直接从源代码 运行 程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。只需要把你的Python程序拷贝到另外一台计算机上,它就可以工作了,这也使得你的Python程序更加易于移植。

面向对象————Python既支持面向过程的编程也支持面向对象的编程。
在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。
在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。
与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。

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

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

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

概括————Python合理地结合了 高性能 与 编写程序简单有趣的特色。


缺点

1. 强制缩进
用缩进来区分语句关系的方式还是给很多初学者带来了困惑。即便是很有经验的Python程序员,也可能陷入陷阱当中。最常见的情况是tab和空格的混用会导致错误,而这是用肉眼无法分别的。

2. 单行语句和命令行输出问题

很多时候不能将程序连写成一行,如import sys;for i in sys.path:print i。

3.虽然比java快,但没法和需要编译的语言相比。有速度要求的话,用C++改写关键部分。

4. 中文资料匮乏,社区内有几本入门级教材已被翻译。

5.构架选择太多(没有像C#这样的官方.net构架,也没有像ruby由于历史较短,构架开发的相对集中。Ruby on Rails 构架开发中小型web程序天下无敌)。

======================

Zope-应用服务器
Plone-内容管理系统
Django-鼓励快速开发的web framework
Twisted - Python Network Application Framework Python的网络应用程序框架
TurboGears - 另一个Web应用快速开发框架
Bit Torrent - 著名的BT下载工具
还有很多游戏也是用Python制作的

应用范围

系统编程,提lass=innerlink>API,能方便进行系统维护和管理,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编程,能方便快速地开发分布式应用程序。
作为Web应用的开发语言,支持最新的XML技术。

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

Python的库

python中有大量优秀的库可以被直接调用以高效地完成不同需求的工作。这里列举一些常见常用的库:

Tkinter———— Python默认的图形界面接口模块。

Tkinter库提供了对Tk API的接口,它属于Tcl/Tk的GUI工具组。

Tcl/Tk是由John Ousterhout发展的书写和图形设备。Tk工具包是和Tcl一起开发的,目的是为了简化用户接口的设计过程。Tk工具包由许多不同的小部件,如一个按钮、一个滚动条等。通过Tk提供的这些小部件,我们就可快速地进行GUI开发。Tkinter是跨平台,在各种平台下都能使用。

Python Imaging Library(PIL)————python提供强大的图形处理的能力,并提供广泛的图形文件格式支持,该库能进行图形格式的转换、打印和显示。还能进行一些图形效果的处理,如图形的放大、缩小和旋转等。是Python用户进行图象处理的强有力工具。

Pmw(Python megawidgets)Python超级GUI组件集————一个在python中利用Tkinter模块构建的高级GUI组件,每个Pmw都合并了一个或多个Tkinter组件,以实现更有用和更复杂的功能。

PyXML———— 用Python解析和处理XML文档的工具包,包中的4DOM是完全相容于W3C DOM规范的。它包含以下内容:

xmlproc: 一个符合规范的XML解析器。
Expat: 一个快速的,非验证的XML解析器。 其他和他同级别的还有 PyHtml PySGML
PyGame———— 用于多媒体开发和游戏软件开发的模块。
PyOpenGL———— 模块封装了“OpenGL应用程序编程接口”,通过该模块python程序员可在程序中集成2D和3D的图形。
NumPy、NumArray和SAGE———— NumArray是Python的一个扩展库,主要用于处理任意维数的固定类型数组,简单说就是一个矩阵库。它的低层代码使用C来编写,所以速度的优势很明显。NumPy是Numarray的后继者,用来代替NumArray。SAGE是基于NumPy和其他几个工具所整合成的数学软件包,目标是取代Magma, Maple, Mathematica和Matlab 这类工具。
MySQLdb模块———— 用于连接
MySQL数据库。还有用于zope的ZMySQLDA模块,通过它就可在zope中连接mysql数据库。

PyGTK ———— 用于python GUI程序开发的GTK+库。GTK就是用来实现GIMP和Gnome的那个库。有了它,你完全可以自信的尝试自己制造Photoshop

PyQt ———— 用于python的Qt开发库。QT就是实现了KDE环境的那个库,由一系列的模块组成,有qt, qtcanvas, qtgl, qtnetwork, qtsql, qttable, qtui and qtxml,包含有300个类和超过5750个的函数和方法。PyQt还支持一个叫qtext的模块,它包含一个QScintilla库。该库是Scintillar编辑器类的Qt接口。

PyMedia ———— 用于多媒体操作的python模块。用于多媒体处理(wav, mp3, ogg, avi, divx, dvd, cdda etc)。可在Windows和Linux平台下使用。

Psyco ———— 一个Python代码加速度器,可使Python代码的执行速度提高到与编译语言一样的水平。

Python-ldap ———— 提供一组面向对象的API,可方便地在python中访问ldap目录服务,它基于OpenLDAP2.x。

smtplib模块 ———— 发送电子邮件。

ftplib模块 ———— 定义了FTP类和一些方法,用以进行客户端的ftp编程。我们可用python编写一个自己的ftp客户端程序,用于下载文件或镜像站点。

xmpppy模块 ———— Jabber服务器采用开发的XMPP协议,Google Talk也是采用XMPP协议的IM系统。在Python中有一个xmpppy模块支持该协议。也就是说,可以通过该模块与Jabber服务器通信。

下面这些就不详细介绍,只列出名字和功能

adodb ———— ADO数据库连接组件

bsddb3 ———— BerkeleyDB的连接组件

chardet ———— 编码检测

scons ———— 项目构建工具,写好了模板用起来还是很方便的

sendpkt ———— Python发包

setuptools ———— 一套python包管理机制

Cheetah ———— 构建和扩充任何种类的基于文本的内容

pycurl ———— URL处理工具

pydot ———— 画图的,graphiz

pyevent ———— Python的事件支持

pylint ———— 培养良好的编码习惯

Pylons ———— 又一个web framework

pypcap ———— 抓包的

pysqlite2 ———— SQLite的连接组件

python-dnet ———— 控制网络安全的其他设备

pythonwin ———— Python的Windows扩展

pywmi ———— 省了折腾功夫

reportlab ———— Python操作PDF的Libary。

scapy ———— 网络包构建分析框架,可编程的wireshark,有兴趣的google “Silver Needle in the Skype”

simplejson ———— JSON的支持

sqlalchemy ———— SQL数据库连接池

SQLObject ———— 数据库连接池

cherrypy ———— 一个WEB framework

ctypes ———— 用来调用动态链接库

Cx-oracle ———— 连接oracle的工具

DBUtils ———— 数据库连接池

django ———— 一个WEB framework

DPKT ———— raw-scoket网络编程

docutils ———— 用来写文档的

dpkt ———— 数据包的解包和组包

feedparser ———— rss解析

Kodos ———— 正则表达式调试工具

Mechanize ———— 爬虫连接网站常用

pefile ———— windows pe文件解析器

py2exe ———— 用来生成windows可执行文件

twisted ———— 巨无霸的网络编程框架

winpdb ———— 自己的程序或者用别的库不太明白的时候就靠它了

wxPython ———— GUI编程框架,熟悉MFC的人会非常喜欢,简直是同一架构

PIL———— Python 的图像处理库,可以打开数十种图像格式,还提供许多图像处理函数,如图像增强、滤波算法等。

Pyro———— Python实现与JAVA RMI类似的技术

PLY———— 基于Python的LEX、YACC的语言工具

Corepy———— 使用Python开发编写x86汇编程序

LightCloud———— Python实现的分布式的键-值数据库

Parallel Python(PP)———— 轻松开发SMP、集群并行计算的库

开源社区的工作已经完成到这样的程度,你所需要做的,只是去把它找出来然后阅读文档。

python资源:

官方主页 :http://www.python.org/

For windows的 python解释器 (包括tkInterGUI开发环境,一个简单的IDE,完整广泛的英文文档)9MB:http://www.python.org/ftp/python/2.4.3/python-2.4.3.msi

一份不错的python中文教程 :http://www.woodpecker.org.cn/obp/diveintopython-zh-5.4/zh-cn/dist/html/toc/index.html 该站致力于python研究,站内还有大量优秀教材下载。

python中文社区 :http://python.cn/ 国内python大牛尽会于此

ChinaUNIX论坛区的python版 http://bbs.chinaunix.net/forum-55-1.html 基本可以认为是国内论坛中python水平最高的

一本最佳的python入门书籍 (英文)http://china-pub.shop.eol.cn/computers/common/info.asp?id=25523

一个很好的开源pythonIDE http://stani.be/python/spe/blog/

一切关于python教程都在"python中国"

http://www.okpython.com

http://bbs.pythonid.com/



=================================================
当我们需要面对更复杂的应用,需要考虑可重用性,需要组织大规模的开发时。

比如企业级关键业务系统,比如银行交易等。这些被认为是J2EE的专有领地,尽管有很多Java人不喜欢J2EE的过于复杂。

在Python的世界里面,简洁就是美,那么是否有类似J2EE的企业开发框架?是否也会如同J2EE般的复杂?

答案:有,是Zope ( http://zope.org ),

它一个Python上的应用服务器。比轻量级web开发框架来得厚重,但远比J2EE开发简单。


因为有ZOPE,所以WEB2.0团队考虑是否该用Python


Zope在1996年出现,大用户。包括GE、美国海军、波士顿在线等.

==========================================================

bfg框架

repoze.bfg 是一个pythonWeb框架。

试图成为一个 "只为你吃的买单" 的框架,只需掌握部分知识,便可快速变得高产;
而不是 "为每个人最后可能都会吃的预先买单" 的那种框架,
那种框架在你能真正高产前,会要求你完全理解非常多的概念和技术. 

repoze.bfg 在你开始写程序前,不强制要求你使用某个特殊技术,
力求需要理解的核心概念最小化,扔掉笨重的盔甲。

最小化

repoze.bfg 仅提供最基本的概念: 
================================

URL映射到代码, 
模板, 
安全性. 

除了这些就没有了:剩下的由你来提供。
=================================

repoze.bfg 意味着非常快,支持在当今一般的硬件上,为正确实现的真实应用,
提供每秒100+请求。
 

转载于:https://my.oschina.net/taisha/blog/37105

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值