对于Python 脚本优点介绍

开发 后端
Python 脚本不提供显式的内存分配回收API,完全自动的内存管理;Python memory manager实现了对程序运行时堆的管理,包括内存的分配,垃圾回收机制等;

下文介绍Python 脚本的文章,类似的,各种语言之间都互有差异,语言只是工具,要根据任务的不同选择不同的工具,做专家系统就用Prolog,要跟操作系统底层交互就用C,跨平台就用Java或Python。

一般来说脚本语言的学习相比系统编程语言而言要更容易些,因为系统语言(如C/C++/Java)功能更加强大,语言复杂性高,学习周期长;从某种意义上说,脚本语言一句指令可以做更多事。

更加人性化,体现了机器为人服务的宗旨。因为一个程序如果人做的少了,机器就相应做的多了,正好符合自动化的思想,发明机器就是为了要减轻人的劳动。脚本语言从这个角度来说是值得大力推崇的。

但是没有什么是***的,让机器做的太多的代价很有可能就是不如让机器做的少运行效率高。比如Python运行时要做动态的类型检查,要耗费机器运行时间,在C等静态编译的语言中这个工作是留给人做了,还有一些类似的因素,因此C的效率比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的沟通能力非常的好。

.NET平台上实现的Python;确切的说Python for .NET是一种编译器和运行时;它将 Python 脚本编译成外部虚拟机的格式,并使得.NET类库在Python语言中可用。IronPython .NET 平台上的Python;相对于传统的Python,IronPython支持可选的静态编译功能,静态编译过的IronPython程序就形成了常规的。

. NET可执行文件(.EXE文件)。甚至还可以将IronPython程序静态编译为.NET动态链接库(.dll文件)并且供C#和VB.NET等. NET语言调用。Python自身的优秀特性决定了其在实际应用中的广泛性。快速原型开发;网络服务器脚本;科学计算;文档处理;数据库编程;

嵌入开发;GUI开发;游戏开发;移动开发......Python 脚本拥有强大Python社区的支持,丰富的类库,以及C/C++/Java等语言提供可扩展模块。 摩尔定律断言了处理器、内存或者I/O设备等将不再大幅度影响程序的执行效率,对于相当一部分的应用程序而言,实现同样的功能。

用系统语言和脚本语言相比,生成代码的运行效率可能都会在可容忍的范围内,但是脚本语言代码量可能会低很多(Python和Java大约是1:6)。开发周期更短,而且现在很多常用的功能都已经用系统语言实现了,可以作为功能模块,配合脚本语言的glue功能,即可完成系统实现。

【编辑推荐】

  1. 如何使Python嵌入C++应用程序?
  2. 深入探讨Ruby与Python语法比较
  3. Python学习资料介绍分享
  4. Python学习经验谈:版本、IDE选择及编码解决方案
  5. 浅析Python的GIL和线程安全
责任编辑:chenqingxiang 来源: 人民邮电出版社
相关推荐

2010-03-17 17:06:10

python脚本语言

2010-09-17 10:00:38

SIP优点

2010-02-01 18:23:54

Python

2010-02-23 15:04:45

Python 集成开发

2010-02-05 16:21:02

Android导航

2009-12-15 17:05:59

.NET 2003

2010-02-23 10:32:20

Python 脚本

2010-04-19 16:42:14

OraclePL

2010-02-04 14:16:45

Android平台

2010-03-03 17:29:30

Android程序

2010-03-16 17:16:51

无线UWB技术

2010-01-19 17:54:47

C++程序

2010-09-10 15:18:28

SOAP协议

2010-03-24 09:46:16

Python 2.6

2009-12-10 14:30:50

VS.NET 2003

2009-12-18 16:51:41

ASP.NET概述

2010-01-14 13:39:45

Visual C++优

2010-02-26 09:33:51

Python脚本

2009-12-22 15:08:46

ADO控件

2010-02-01 16:32:49

Python脚本
点赞
收藏

51CTO技术栈公众号