返回顶部

编辑

python

Python(英语发音:/ˈpʌɪθ(ə)n/),是一种面向对象、直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法非常简捷和清晰,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

Python支持命令式程序设计、面向对象程序设计、函数式编程、面向切面编程、泛型编程多种编程范式。与Scheme、Ruby、Perl、Tcl等动态语言一样,Python具备垃圾回收功能,能够自动管理存储器使用。它经常被当作脚本语言用于处理系统管理任务和网络程序编写,然而它也非常适合完成各种高级任务。Python虚拟机本身几乎可以在所有的作业系统中运行。使用一些诸如py2exe、PyPy、PyInstaller之类的工具可以将Python源代码转换成可以脱离Python解释器运行的程序。

Python的主要参考实现是CPython,它是一个由社区驱动的自由软件。目前由Python软件基金会管理。基于这种语言的相关技术正在飞快的发展,用户数量快速扩大,相关的资源非常多。

Python是一种很灵活的语言,能帮你轻松完成编程工作。并可作为一种原型开发语言,加快大型程序的开发速度。

有多种数据类型:numbers (integers, floating point, complex, and unlimited-length long integers), strings (ASCII 和 Unicode), lists, dictionaries。 PythonPython

Python支持类和多层继承等的面向对象编程技术。

代码能打包成模块和包,方便管理和发布。

支持异常处理,能有效捕获和处理程序中发生的错误。

强大的动态数据类型支持,不同数据类型相加会引发一个异常。

Python支持如生成器和列表嵌套等高级编程功能。

自动内存碎片管理,有效利用内存资源。

强大的类库支持,使编写文件处理、正则表达式,网络连接等程序变得相当容易。

Python的交互命令行模块能方便地进行小代码调试和学习。

Python易于扩展,可以通过C或C++编写的模块进行功能扩展。

Python解析器可作为一个编程接口嵌入一个应用程序中。

Python可运行在多种计算机平台和操作系统中,如各位unix,linux,windows,MacOS,OS/2等等。

Python是开源的,可自由免费使用和发布,并且可用于商业用途以获取利润。 应用范围

系统编程,提lass=innerlink>API,能方便进行系统维护和管理。

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

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

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

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

网络编程,提供丰富的模块支持sockets编程,能方便快速地开发分布式应用程序。

作为Web应用的开发语言,支持最新的XML技术。

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

简单————Python是一种代表简单主义思想的语言。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。

易学————就如同你即将看到的一样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。

免 费、开源————Python是FLOSS(自由/开放源码软件)之一。简单地说,你可以自由地发布这个软件的拷贝、阅读它的源代码、对它做改动、把它的 一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为什么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!

解释性————这一点需要一些解释。一个用编译性语言比如C或C++写的程序可以从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程通过编译器和不同的标记、选项完成。当你运行你的程序的时候, 连接/转载器软件把你的程序从硬盘复制到内存中并且运行。而Python语言写的程序不需要编译成二进制代码。你可以直接从源代码 运行 程序。在计算机内部,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确实是一种十分精彩又强大的语言。它合理地结合了高性能与使得编写程序简单有趣的特色。

python的web开发框架

  1. django Python框架虽然说是百花齐放,但仍然有那么一家是最大的,它就是Django。要说Django是Python框架里最好的,有人同意也有人坚决反对,但说Django的文档最完善、市场占有率最高、招聘职位最多估计大家都没什么意见。
  2. Pylons & TurboGears & repoze.bfg 除了Django另一个大头就是Pylons了,因为TurboGears2.x是基于Pylons来做的,而repoze.bfg也已经并入Pylons project里这个大的项目里,后面不再单独讨论TurboGears和repoze.bfg了。

Pylons和Django的设计理念完全不同,Pylons本身只有两千行左右的Python代码,不过它还附带有一些几乎就是Pylons御用的第三方模块。Pylons只提供一个架子和可选方案,你可以根据自己的喜好自由的选择Template、ORM、form、auth等组件,系统高度可定制。我们常说Python是一个胶水语言(glue language),那么我们完全可以说Pylons就是一个用胶水语言设计的胶水框架:)

  1. Tornado & web.py

Tornado即是一个web server(对此本文不作详述),同时又是一个类web.py的micro-framework,作为框架Tornado的思想主要来源于web.py,大家在web.py的网站首页也可以看到Tornado的大佬Bret Taylor的这么一段话(他这里说的FriendFeed用的框架跟Tornado可以看作是一个东西):

“[web.py inspired the] web framework we use at FriendFeed [and] the webapp framework that ships with App Engine…”

因为有这层关系,后面不再单独讨论Tornado。

web.py的设计理念力求精简(Keep it simple and powerful),总共就没多少行代码,也不像Pylons那样依赖大量的第三方模块,而是只提供的一个框架所必须的一些东西,如:URL路由、Template、数据库访问,其它的就交给用户自己去做好了。 本站OutOfMemory.CN用的就是webpy.

  1. Bottle & Flask

Bottle和Flask作为新生一代Python框架的代表,挺有意思的是都采用了decorator的方式配置URL路由,如:

from bottle import route, run

@route('/:name')
def index(name='World'):
    return '<b>Hello %s!</b>' % name

run(host='localhost', port=8080)

Bottle、Flask跟web.py一样,都非常精简,Bottle甚至所有的代码都在那一个两千来行的.py文件里。另外Flask和Pylons一样,可以跟Jinja2、SQLAlchemy之类结合的很好。

不过目前不管是Bottle还是Flask成功案例都还很少。

  1. Quixote

之所以要特别说一下Quixote,是因为国内的最大的用Python开发的网站“豆瓣网”是用Quixote开发的。

其它(web2py、uliweb、Karrigell、Werkzeug …)

国内学习python的社区有:

  1. python-cnCPyUG华蟒用户组
  2. 啄木鸟社区
  3. 豆瓣python小组
  1. 一. python打开文件代码如下: ```python f = open("d:\test.txt", "w") ``` 说明: 第一个参数是文件名称,包括路径; 第二个参数是打开的模式mode >'r':只读(缺省。如果文件不存在,则抛出错误) >'w':只写(如果文件不存在,则自动创建文件) >'a':附加到文件末尾 >'r+':读写 ...查看
  2. 使用pyinstaller打包python为exe文件 最近用python的tkinter写了个windows界面的工具,用来对软件版本发布的自动化,之前发布版本是由PHP的同事完成,又是手动上传文件到ftp,又是修改数据库,php代码等这么多繁琐的步骤。所以决定用python写了个windows的应用,因为版本发布可能会交给运营的同事完成,所以用tkinter写了个界面,顺便转换成exe ...查看
  3. 由于要做把一个多线程改成多进程,看一下相关方面的东西,总结一下,主要是以下几个相关的标准库 1. subprocess 2. signal 3. threading 4. multiprocessing ##mutilprocess简介 像线程一样管理进程,这个是mutilprocess的核心,他与threading很是相像,对多核CPU的利用率会比thre ...查看
  4. 使用python开发时,由于python的开源生态圈非常的给力,对于实现同一个功能,往往在这方面的类库非常多,而开发者也同样面临着如何选择最佳的 类库作为辅助开发的工具。本文将记录本人在使用python处理xml格式数据时测试过的类库,有些类库由于先天不足,无法支持一些特性,涉及的类库或模 块有xml(python自带)、libxml2 、lxml 、xpath 。 附注:本文处理xml格式 ...查看
  5. 用python安装mmseg分词包时发生了 Unable to find vcvarsall.bat 错误 ```err Searching for mmseg Reading http://pypi.python.org/simple/mmseg/ Best match: mmseg 1.3.0 Downloading http://pypi.python.org/packages ...查看
  6. 利用程序自己编写下载文件挺有意思的。 Python中最流行的方法就是通过Http利用urllib或者urllib2模块。 当然你也可以利用ftplib从ftp站点下载文件。此外Python还提供了另外一种方法requests。 来看看三种方法是如何来下载zip文件的: ```python import urllib import urllib2 import ...查看
  7. python使用datetime模块timedelta实现日期时间相加: ##python计算明天的日期: [代码片段(7行)] ##python计算昨天时间: [代码片段(7行)] 使用timedelta可以很方便的在日期上做天days,小时hour,分钟,秒,毫秒,微妙的时间计算,如果要计算月份则需要另外的办法 ##计算上个月的月份 [代码片段(3 ...查看
  8. PersistentDict从dict继承,实现了持久化。初始化时自动加载文件到内存,关闭时将dict内容序列化到文件,支持csv,json,pickle格式。 ```{.python} import pickle, json, csv, os, shutil class PersistentDict(dict): ''' Persistent dictionary w ...查看
  9. Python的str类有split方法,但是这个split方法只能根据指定的某个字符分隔字符串,如果要同时指定多个字符来分隔字符串,该怎么办呢? 幸运的是python的re模块中提供的split方法可以用来做这件事情,如下代码示例: ```python import re re.split('; |, ',str) ``` 例如: ```python >>> a=' ...查看
  10. 2012-12-28 20:13:45python爬虫抓网页的总结 by jzzlee
    学用python也有3个多月了,用得最多的还是各类爬虫脚本:写过抓代理本机验证的脚本,写过在discuz论坛中自动登录自动发贴的脚本,写过自动收邮件的 ...查看
  11. [代码片段(113行)] ...查看
  12. [代码片段(32行)] ip.txt格式 ...查看
更多