Python语言是不被大多数人知道的东西,这里就简单概述下Python语言,顺便闲谈一下Python 标准库。“俗话”说:库即是语言,语言即是库。由此可见拥有一套高质量、具备良好可复用库对于一门通用开发语言来说有多重要。这也的难怪“C + + 老爹”BjarneStroustrup? 逢人就大倒苦水:C++的库还是太少,C++社群需要开发更多高质量的库出来!

还好,为Python语言开发一套质量不错的库的复杂程度远没有C++来得复杂。而且Python社区同样也深知库的重要性。结果就是Python的发行版即奉上超过300个的标准库(这还不包括专门针对Mac机的50 余个库,谁让那小子另类呢)。 300 多个库中,绝大部分具备跨平台能力(*NIX/Windows)。这些库覆盖了开发的方方面面,Python语言的用户可以在一个典型命令行环境下(比如Linux Shell),仅仅利用标准库即可完成绝大部分工作,同时无需考虑库的各种兼容性问题。Python社群对于库的重视可见一斑。

即便是拥有如此多的标准库。这也似乎未能阻止Python社群的开发者们天马行空般的思维。借助于动态语言简洁、优雅、灵活的表达能力,这些第三方的库经常展现出令人赞叹的想象力。

好吧,现在让我们在庞大的Python库选取点滴,也许它能带给我们一些另类的思考。

SQLObject

SQLObject 可以看做是Python领域的Hibernate。它也是目前python社区中最为成熟方便的O/R mapping工具。和Hibernate相比,SQLObject 利用了动态语言的独有特性,通过灵活使用继承、灵活使用MetaData?能力,能够快速方便定义直接在程序中定义映射类,不用像Hibernate中那样还需单独定义一个XML文件。同样,借助强大的动态能力,SQLObject 还拥有一个Hibernate所远不及的功能,那就是SQLObject 的映射类可以在运行时动态改变自身结构,这也意味着数据库中的表结构也可以在运行时进行改变。总之,对Hibernate略有了解的开发者均能迅速理解SQLObject。虽然我一直认为SQLObject 还远未能将Python 的动态能力发挥到极致。不过这却是一个良好的开始。也许我们可以在不久将来看到更多更具新意的O/R mapping 工具。

TurboGear?

自RoR(Ruby on Rails)在Web开发领域一夜成名后,在其它语言社区,跟风之作也如雨后春笋一般涌现出来。虽然TurboGear?并非刻意模仿RoR 之作,不过它确确实实借着RoR流行潮流得到更多人的重视。与RoR相同,TurboGear?也是一个轻量级Web开发套件,通过几个命令行工具能够快速生成以数据库为核心的基本框架代码。典型的RoR 思想!这和许多开源框架的原则一样——“避免重新发明轮子”。TurboGear?的Web 控制层使用CherryPy?;持久层使用SQLObject;模板使用Kid;AJAX使用MochiKit?。几乎所有的重要的功能组件都源自第三方。TurboGear?自身更像一个黏合剂,把所有的功能组合在一起,并能够形成力量的倍增。

4Suite

虽然Python 标准库提供了XML处理工具,但是它只提供一些基本功能。如果你想获得更为强大的XML 处理能力,4Suite是一个更好的选择。

4Suite被称为XML工具中“内行的选择”。除了最基本的Dom-Like和SAX-Like处理库外,4Suite 还提供XInclude,XPointer,XLink,XPath,XUpdate用于XML文档的查询、更新操作等等;提供XSLT完整处理能力。

4Suite不光功能强大,性能也相当不错。这主要是得益于其核心代码部分采用C完成。这在需要处理大量XML文档的地方,4Suite实在是一个完美的选择。

Pyro

Pyro 的全称是“Python Remote Objects”。按照字面即可理解Pyro 的功能:提供远程对象。Pyro 为Python语言提供异常简洁的RPC解决方案。其实Python语言中不乏一些更加通用的远程调用方案,例如都是基于XML 的XMLRPC和SOAP。那么 Pyro这样的单纯的Python远程调用方案具有什么样的优势呢?那就是性能与易用性。

由于动态语言具有强大反射能力,因此实现对象序列化对于Python来说简直易如反掌。对象的序列化在Python中被称为pickle,这是许多Python应用的核心机制。Pyro 也正是充分利用pickle 的威力,在网络间提供远程对象的调用。它的性能要远远超过使用XML 对远程对象进行编码/解码。同时,它在接口调用设计上也非常简洁。在服务器端和客户端只需2、3 行代码就完成对象的封装与调用,远比SOAP来得简单轻松。

Twisted

上个月,Zope 3.2发布,在这个最新版中, 一个重要的变化就是:使用了近十年的处理Web请求的网络框架代码被放弃,取而代之是以Twisted 为核心实现的代码。据称这样可以改善系统性能以及可扩展性。于是Twisted库再一次成为了人们关注的焦点。 Twisted 的核心概念是非阻塞异步网络服务器(所以它也被成为Python中ACE,如果你还不知道什么是 ACE,那么看看前面关于C++库的文章),这是目前为止性能最好的网络处理模型。也许是非阻塞异步处理的天生复杂性所致,Twisted 几乎是我所见过的最复杂,最难用的Python库。Twisted 的使用者需要面对大量新的概念和新的模式,这一点上和ACE 倒颇有几分相似。陡峭的学习曲线,阻碍了很多人掌握Twisted 库。这也许是想要获得高性能所付出的必要代价。难怪 O’REYLLI在其出版的关于Twisted的书的封面引用了一只九头怪蛇,还真是贴切。

Psyco

赞美Python的好话可以说一箩筐,那么它的缺点是什么?这还用问吗,当然是性能。性能——已经成为Python根深蒂固的老毛病了。不要说和C++/Java/C#这样的语言相比,即使是和它的同门兄弟们——Ruby、Perl、PHP 这样的脚本语言相比,Python的性能依然是最糟糕的。Python的设计者们似乎仅仅在乎语言机制的完美,几乎不考虑性能。CPythony 引擎已经发展了这么多年,查看其源代码,性能优化代码少之又少。对象引用模型至今还在使用引用计数器的方式,至于发展一个JIT 引擎,算了吧,不要指望了。还好,Psyco 的出现,带给我们了一线希望。Psyco 通过将运行中字节码编译为二进制代码从而大幅提升整个应用的性能,在某些环境中甚至能将速度提升一个数量级。虽然Psyco还不能视为一个真正意义上的JIT 的引擎,也无法像Java中的JIT 那样提供完全透明的服务。但我们仍然要为Psyco的发展感到振奋。目前,在其最新版本中,只需两行代码的添加,就能使你的程序充分使用Psyco,从而提升性能。

wxPython

在许多人眼里,动态语言/脚本语言一般仅适合完成命令行或WEB的工作,而在桌面开发方面实在是丑陋不堪。而wxPython的出现无疑是给这种偏见以有力的回击。

wxPython 实际上发展多年的C++框架wxWindow(现已更名为wxWidgets)的Python封装。而 wxWindow的目标是建立一个跨平台的GUI 框架。wxWindow 现已能在Windows/Unix/Mac 上良好运行。自然wxPython也能横跨上述几个平台。

wxPython 使用的原生窗口。这就意味着使用wxPython 开发的GUI 和操作系统本地GUI 系统在界面外观上没有任何区别。如果和Java中GUI库对比一下,就可以发现,wxPython 更加类似SWT 而不是Swing。因为SWT也是使用的原生窗口,想想Eclipse 的界面有多漂亮就知道原生窗口的优势了。

虽然不少C++爱好者对wxWindow框架的设计颇有微词,不过在经过Python的封装后,没有了指针、没有了 MFC时代的事件机制,wx框架的易用性获得了极大提升。这也是Python的另一个巨大魅力所在。以上介绍Python语言。

python经验总结_Python语言经验总结相关推荐

  1. c和python的优缺点_Python语言有什么优缺点?

    在很多人眼中,Python是一门全能语言,可以做很多的事情,那么你知道Python有什么优缺点吗?我想这是很多人都比较好奇的问题,我们一起来看看吧. 优点: Python是一种代表简单主义思想的语言, ...

  2. python实验心得_Python语言初学总结

    课程名称:程序设计方法学 实验1:程序设计语言工具 时间:2015年10月21日星期三,第3.4节 地点:理工楼1#208 一.实验目的 1.深入理解程序设计语言及其几种常见的编程范型: 2.激发学生 ...

  3. python epoll 并发_Python语言之python并发原理(阻塞、非阻塞、epoll)

    本文主要向大家介绍了Python语言之python并发原理(阻塞.非阻塞.epoll),通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 在Linux系统中 01 阻塞服务端 特征: ...

  4. python常考题_Python语言基础考察点:python语言基础常见考题(一)

    一.python是静态还是动态类型?是强类型还是弱类型? 1.动态强类型语言(不少人误以为是弱类型) 不要傻傻分不清 2.动态还是静态指的是编译期还是运行期确定类型 3.强类型指的是不会发生隐式类型转 ...

  5. 学python的前提_Python语言学习前提:条件语句

    一.条件语句 1.条件语句:通过一条或多条语句的执行结果(True或False)来决定执行额代码块.python程序语言指定任何非0或非空(null)的值为true,0或null为false. 2. ...

  6. guido python正式发布年份_Python语言适合哪些领域的计算问题? (1.3分)_学小易找答案...

    [单选题]关于Python中的复数,下列说法错误的是 (1.3分) [多选题]药物作用的基本规律包括? [单选题]Python 中,以下哪个赋值操作符是错误的? (1.3分) [单选题]哪个选项是下面 ...

  7. python切片输出_Python语言之详解切片

    本篇文章主要讲述Python语言之详解切片,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入. 切片操作就是对list,元组,字符串进行截取操作有了切片操作,很多地方循环就不再需要了 ...

  8. python约瑟夫环_Python语言之如何实现约瑟夫环问题

    本文Python语言实例讲述了Python实现约瑟夫环问题的方法.分享给大家供大家参考,希望对大家学习Python语言有所帮助,具体如下: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0 ...

  9. python画图配色_python语言,文章绘图配色高级又简单!

    配色的选择是在我们论文文章画图过程中经常面临的一个问题.常用的R或python语言都内置了默认的颜色系统,强大的默认设置可以满足我们的绘图需求. 但当我们需要绘制更多的图形时,固定的配色就会显得重复, ...

最新文章

  1. pip install 豆瓣源、清华源、阿里源、中国科技大学源
  2. Windows 7任务栏图标特别说明
  3. oracle中有类似split的方法么,ORACLE中字符串split的一种方法
  4. CDOJ1324-卿学姐与公主 【线段树点更新】
  5. c语言fgetc()函数(从指定的流 stream 获取下一个字符(一个无符号字符),并把位置标识符往前移动)
  6. 时间序列研(part13)--习题
  7. 7 行代码优雅地实现 Excel 文件导出功能?
  8. d3 canvas_D3和Canvas分3个步骤
  9. 深入理解并发的关键字-volatile
  10. Angular 7和ASP.NET Core 2.1入门
  11. PaddlePaddle线性回归示例
  12. javascript之dom详细笔记加练习
  13. 电脑芯片级维修点常用工具一览
  14. win7 计算机无法搜索,Win7电脑搜索功能不能用的解决方法
  15. Docker:架构分解
  16. 做一款微信小程序到底需要多少钱?
  17. UML相关工具一览(2018年5月更新)
  18. 对接支付宝App支付和网页支付接口详解
  19. DataStream API【3】
  20. STM32f1之简单控制继电器模块(附源码)

热门文章

  1. Proxy与Reflect详解
  2. CarSim仿真快速入门(三)
  3. GitHub Actions 漏洞可导致攻击者投毒开发管道
  4. 转:Linux系统管理学习路线图
  5. JAVA—— AJAX
  6. 剪枝优化RIPPER算法
  7. 编写代码、打印图4-2所示的图形python_Python之turtle库画各种有趣的图及源码(更新中)_一个超会写Bug的程序猿的博客-CSDN博客...
  8. 金三银四求职季,前端面试题小梳理(HTML、CSS、JS)
  9. Vue2写浙江政务服务平台微服务踩的坑
  10. 数学课本上的9大变态!