在Python应用语言里面强调最多的就是可读性,好的代码会给人的感觉很清爽、美观;程序以模块和包的形式分发,版本可控性强;Python编译成的字节码具有平台无关性。
垃圾回收(garbage collection,一下简称GC)在当前的版本中使用的是引用计数垃圾收集和可选的循环结构垃圾空间扫描技术。一旦对象变得‘不可达’的时候就会被回收,但是不保证能够回收包含循环引用计数的内存垃圾。引用计数的算法比较直观:在每个存储片中记录了指向其的指针数目;
在对存储片进行某些操作时,对引用计数进行更新,分配一个存储片时引用计数初始化为1,只要存储片的引用被复制,引用计数加1,存储片的引用被删除时,引用计数减1,如果引用计数减为0。
则存储片会由于不可达而被回收。很明显引用计数算法不能回收循环的数据结构;设想一个简单的场景:对象a一个成员指向对象b。同时b也有一个成员指向a,而且代码中只有引用a的部分,b对象只是辅助a对象而生成的,如果后来a对象被删除了。
那么a和b作为一个整体都变成内存垃圾了,理论上应该都被内存管理器删除,但是由于引用计数算法每次只考察一个结点,因此对于循环的数据结构无法回收。所以在编程时应尽量避免循环引用的情况出现。 Python语言的执行效率跟C/C++/Java比起来要稍逊一筹,但是代码长度大大缩短,并且Python跨平台、类库丰富、语法简单、开发速度快。
因此常用Python应用语言代替C/Java构建大程序,涉及到系统效率的地方可以考虑用C/C++实现。而且Python也可以做glue language(胶水语言),因为Python跟C和Java的沟通能力非常的好。
三大脚本语言的比较:Perl Python Tcl Perl原是专门设计处理文本的,这方面能力***,但是不适合编写大程序,语法晦涩难懂,与之相比,Python更易阅读。学习,可维护性更强,代码安全性更好(Python的异常处理),并且与Java语言更好的集成能力;Tcl的语法简单。
和其它程序的交互能力强,可以和C语言集成,而且有tk辅助GUI开发,但是Tcl更多是作为scripting language和glue language,不适合写大程序,与之相比Python的应用范围要广阔的多。 #t#
Ruby:Python的正则表达式没有Ruby的用着方便,Ruby比Python有更完整的面向对象的语法,Ruby的主要功能都是用类的方法调用来实现的。不是函数;另一方面由于Ruby的强大,语言相对Python复杂,Ruby没有内省性,缺乏国际化支持,缺乏类似Jython的东西。
Python应用语言自身的优秀特性决定了其在实际应用中的广泛性。快速原型开发;网络服务器脚本;科学计算;文档处理;数据库编程;嵌入开发;GUI开发;游戏开发;移动开发......Python拥有强大Python社区的支持,丰富的类库,以及C/C++/Java等语言提供可扩展模块。
【编辑推荐】