perl和python各自擅长什么领域?

 我来答
pbjt365
推荐于2018-02-17 · TA获得超过121个赞
知道答主
回答量:110
采纳率:50%
帮助的人:121万
展开全部
Perl 设 计之初就是为了方便编写复杂高效的系统脚本,它也是应该最为广泛的脚本编程语言。它在编程方面相当于瑞士军刀,对字符、文本文件处理能力很强,以前要求 shell+sed+awk+C才能完成的任务,只需perl脚本就可以完成了。而且应用领域一直在拓宽,支持面向对象程序设计。 Python 面向对象的动态公共语言,适于脚本编程和快速开发,它最显著的特点是作为编译语言(如C)和脚本语言(如perl)之间的桥接语言,它具有的强大功能,可扩充性及面向对象的特征使其成为大规模应用程序开发工具。 关于强类型Perl语言中,数据的类型,取决于数据所处的上下文。 Python语言中,数据类型,是数据自身确定的。Python因此一般被认为是强类型语言,而Perl则不是,不过Perl的爱好者一般不关心这种事情。实际上,换个角度来看,Python是固定的数据类型,变化的函数类型;而 Perl则是固定的函数类型,变化的数据类型。都很有意思。 关于 内置基础类型 Perl的基础类型叫做scalar,这是为了和后面的array和hash做区别。scalar可以是数字,也可以是字符串。基本上说,scalar非此即彼;换句话说,scalar既是数字,又是字符串。scalar到底是字符串,还是数字,完全取决于使用scalar的上下文,如果是一个处理字符串的函数,那么它是字符串;如果是一个处理数字的函数,那么它是数字。Perl会尽一切努力完成它们之间的转化,无论在你看来有多么荒诞。 Perl中,所有scalar都以$开头,所有以$开头的都是scalar。 Python的基础类型,同样,不是数字,就是字符串。但是,不可能既是数字,又是字符串。Python会判断变量到底是数字,还是字符串,以此来选择怎么解释函数;如果它找不到一个合适的解释,那么Python会抛出异常。一般来说,这种策略能够取悦一部分程序员,同时让另外一部分人感觉很不爽。 关于 复合类型 Perl有两种复合类型:array和hash。Python有三种复合类型:tuple, list, dict。 Python中的tuple+list,完全对应于Perl中的array;因此不存在谁提供的 类型更丰富这样的问题。 关于 创建Perl中创建array可以通过()。但是()到底是否会创建一个array,这取决于所处的上下文;换句话说,只有当上下文要求一个array时,()才会产生一个array。事实上,()可能创建一个scalar,也可能创建一个hash,这完全取决于上下文。 关于存取单个元素 Perl中我们可以用$foo[$bar]来表示foo这个array中的第$bar个元素。特别诡异的是,这个foo和$foo中的foo是完全不相干的,这回应了前面提到的Perl原则,一个符号到底什么意思,取决于上下文。并且,在$foo[$bar]这样一个上下文中,$bar会被Perl 搞成整数,无论它本来是什么。 Perl中,用一个越界的idx访问array是完全正常的,Perl会悄悄的扩展array。Python中,tuple或者是list,两者都通过lst[idx]这样的形式存取其中的元素。 Python中,用一个越界的idx访问array会触发一个异常。 Python中,提供了强大的slice功能。 关于做为整体的list Perl中,用@开头的名字表示整个array,据说是因为@是array的字头。但是,又根据Perl的原则,@foo这样的array也可以被使用到一个需要scalar的环境中去,Perl会尽力把@foo转换成一个scalar,一般来说,这个scalar就是@foo的长度。
lifeisspace
2011-10-09 · TA获得超过223个赞
知道答主
回答量:57
采纳率:0%
帮助的人:30.2万
展开全部
Perl

设 计之初就是为了方便编写复杂高效的系统脚本,它也是应该最为广泛的脚本编程语言。它在编程方面相当于瑞士军刀,对字符、文本文件处理能力很强,以前要求 shell+sed+awk+C才能完成的任务,只需perl脚本就可以完成了。而且应用领域一直在拓宽,支持面向对象程序设计。

Python

面向对象的动态公共语言,适于脚本编程和快速开发,它最显著的特点是作为编译语言(如C)和脚本语言(如perl)之间的桥接语言,它具有的强大功能,可扩充性及面向对象的特征使其成为大规模应用程序开发工具。

关于强类型

Perl语言中,数据的类型,取决于数据所处的上下文。Python语言中,数据类型,是数据自身确定的。Python因此一般被认为是强类型语言,而Perl则不是,不过Perl的爱好者一般不关心这种事情。实际上,换个角度来看,Python是固定的数据类型,变化的函数类型;而

Perl则是固定的函数类型,变化的数据类型。都很有意思。

关于 内置基础类型

Perl的基础类型叫做scalar,这是为了和后面的array和hash做区别。scalar可以是数字,也可以是字符串。基本上说,scalar非此即彼;换句话说,scalar既是数字,又是字符串。scalar到底是字符串,还是数字,完全取决于使用scalar的上下文,如果是一个处理字符串的函数,那么它是字符串;如果是一个处理数字的函数,那么它是数字。Perl会尽一切努力完成它们之间的转化,无论在你看来有多么荒诞。

Perl中,所有scalar都以$开头,所有以$开头的都是scalar。

Python的基础类型,同样,不是数字,就是字符串。但是,不可能既是数字,又是字符串。Python会判断变量到底是数字,还是字符串,以此来选择怎么解释函数;如果它找不到一个合适的解释,那么Python会抛出异常。一般来说,这种策略能够取悦一部分程序员,同时让另外一部分人感觉很不爽。

关于 复合类型

Perl有两种复合类型:array和hash。Python有三种复合类型:tuple,

list, dict。

Python中的tuple+list,完全对应于Perl中的array;因此不存在谁提供的

类型更丰富这样的问题。

关于 创建

Perl中创建array可以通过()。但是()到底是否会创建一个array,这取决于所处的上下文;换句话说,只有当上下文要求一个array时,()才会产生一个array。事实上,()可能创建一个scalar,也可能创建一个hash,这完全取决于上下文。

关于存取单个元素

Perl中我们可以用$foo[$bar]来表示foo这个array中的第$bar个元素。特别诡异的是,这个foo和$foo中的foo是完全不相干的,这回应了前面提到的Perl原则,一个符号到底什么意思,取决于上下文。并且,在$foo[$bar]这样一个上下文中,$bar会被Perl 搞成整数,无论它本来是什么。

Perl中,用一个越界的idx访问array是完全正常的,Perl会悄悄的扩展array。Python中,tuple或者是list,两者都通过lst[idx]这样的形式存取其中的元素。

Python中,用一个越界的idx访问array会触发一个异常。

Python中,提供了强大的slice功能。

关于做为整体的list

Perl中,用@开头的名字表示整个array,据说是因为@是array的字头。但是,又根据Perl的原则,@foo这样的array也可以被使用到一个需要scalar的环境中去,Perl会尽力把@foo转换成一个scalar,一般来说,这个scalar就是@foo的长度。

Python中,直接使用变量名,就能获得整个list(或者tuple)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式