当前位置:首页 » 编程语言 » shellperlpython

shellperlpython

发布时间: 2022-11-07 04:13:51

python 与其他语言的比较优点是

Python已经和很多语言比较过了。一个原因就是Python提供了很多其他语言拥有的特性,另外一个原因就是Python本身也是由诸多其他语言发展而来的,包括ABC、Mola-3、C.C++.Algol-68.SmallTalk.Unix shell和其他的脚本语言,等等。Python就是“浓缩的精华”VanRossum研究过很多语言,从中吸收了许多觉得不错的特性,并将它们溶于一炉。
然而,往往因为Python是一门解释型语言,你会发现大多数的比较是在Perl、java.Tcl,还有JavaScript之间进行的。Perl是另外一种脚本语言,远远超越了标准的shell脚本。像Python一样,Perl赋予了你所有编程语言的功能特性,还有系统调用能力。
Per最大的优势在于它的字符串模式匹配能力,其提供了一个十分强大的正则表达式匹配引擎。这使得Per1实际上成为了一种用于过滤、识别和抽取字符串文本的语言,而且它一直是开发Web服务器端CGI (common gateway interface,通用网关接口)网络程序的最流行的语言。Python的正则表达式引擎很大程度上是基于Perl的。然而,Perl语言的晦涩和对符号语法的过度使用,让解读变得很困难。这些语法令初学者不得精要,为他们的学习带来了不小的阻碍。Perl的这些额外的“特色”使得完成同一个任务会有多个方法,进而引起了开发者之间的分歧。最后,通常当你想阅读几个月前写的Perl脚本的时候都不得不求助参考书。Python也经常被拿来和Java作对比,因为他们都有类似的面向对象的特性和语法。Java的语法尽管比C++简单的多,但是依旧有些繁琐,尤其是当你想完成一个小任务的时候。Python的简洁与纯粹使用Java相比提供了更加快速的开发环境。在Python和Java的关系上,一个非常重大的革命就是Jython的开发。Jython是一个完全用Java开发的Python解释器,现在可以在只有Java虚拟机的环境中运行Python程序。我们会在后面的章节中简单讲述Jython的更多优点,但是现在就可以告诉你:在Jython的脚本环境中,你可以熟练地处理Java对象,Java可以和Python对象进行交互,你可以访问自己的Java标准类库,就如同Java一直是Python环境的一部分一样。
现在,由于Rails项目的流行,Python也经常被拿来和Ruby进行比较。就像前面我们提到的,Python是多种编程范式的混合,它不像Ruby那样完全面向对象,也没有像Smalltalk那样的块,或许这正是Ruby最引人注目的特性。Python有一个字节码解释器,而Ruby没有。Python更加易读,而Ruby事实上可以看作是面向对象的Perl。相对于Rails, Python有几个自己的Web应用框架,比如Django和Turbogears这两个项目。

❷ 怎样用perl脚本调用python脚本并传递参数

举例:shell的脚本:t.sh内容:echo "this is a test shell with arguments"echo "arg1 = $1; arg2 = $2;"执行脚本./t.sh zhao结果如下:[noncode@gnode108 knockdown_workflow]$ ./t.sh zhao1 zhao2this is a test shell with argumentsarg1 = zhao1; arg2 = zhao2;python脚本:[noncode@gnode108 knockdown_workflow]$ cat t.py #!/usr/bin/env pythonimport osimport sysdef main():print 'Hello world!'if len(sys.argv) < 2 : print "usage:%s config log" %(sys.argv[0]) sys.exit(1)arg0 = sys.argv[0]arg1 = sys.argv[1]print "arg0 = %s; arg1 = %s" % (arg0, arg1) print "test ./t.sh: "os.system('./t.sh ' + arg0 + ' ' + arg1)print "test method of replacing: "t = 't.sh'm = 'zhao'n = 'zhao'cmd = "./%s %s %s" % (t,m,n)print "t = %s; m = %s; n = %s; cmd = %s" % (t,m,n,cmd)os.system(cmd)if __name__ == '__main__':main()运行脚本:python t.py t.sh执行结果:[noncode@gnode108 knockdown_workflow]$ python t.py t.shHello world!arg0 = t.py; arg1 = t.shtest ./t.sh: this is a test shell with argumentsarg1 = t.py; arg2 = t.sh;test method of replacing: t = t.sh; m = zhao; n = zhao; cmd = ./t.sh zhao zhaothis is a test shell with argumentsarg1 = zhao; arg2 = zhao;[noncode@gnode108 knockdown_workflow]$ cat t.sh echo "this is a test shell with arguments"echo "arg1 = $1; arg2 = $2;"[noncode@gnode108 knockdown_workflow]$ ./t.sh zhao1 zhao2this is a test shell with argumentsarg1 = zhao1; arg2 = zhao2;说明:两种方法使用python脚本调用shell脚本:第一种方法:os.system('./t.sh ' + arg0 + ' ' + arg1)注:./t.sh后面有一个空格,不同的第二种方法:t = 't.sh'm = 'zhao'n = 'zhao'cmd = "./%s %s %s" % (t,m,n)print "t = %s; m = %s; n = %s; cmd = %s" % (t,m,n,cmd)os.system(cmd)注:在之前把字符串聚合到一起。

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

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)。

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

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的长度。

❺ PHP,Python,Perl是些什么语言

PHP:PHP是一种开放源代码的脚本编程语言。主要用于Web服务器的服务器端应用程序,用于动态网页设计,是一种嵌入HTML页面中的脚本语言。
Python
(发音:[
'paiθ(ə)n;
(US)
'paiθɔn
]),是一种面向对象的解释性的计算机程序设计语言,也是一种功能强大而完善的通用型语言,已经具有十多年的发展历史,成熟且稳定。Python
具有脚本语言中最丰富和强大的类库,足以支持绝大多数日常应用。
Perl借取了C、sed、awk、shell
scripting以及很多其他程序语言的特性。
Perl
一般被称为“实用报表提取语言”(PracticalExtraction
andReportLanguage),虽然有时被称做“病态折中垃圾列表器”(PathologicallyEclectic
Rubbish
Lister)。它是术语,而不仅仅是简写,Perl的创造者,LarryWall提出第一个,但很快又扩展到第二个。那就是为什么“Perl”没有所有字母都大写。没必要争论那一个正确,Larry
两个都认可。
你也可能看到“perl”,所有的字母都是小写的。一般,“Perl”,有大写的
P,是指语言本身,而“perl”,小写的
p,是指程序运行的解释器。
Perl的正式网站是
www.perl.org。

❻ 敢问Perl 比 Python 好在哪里

1. perl正则好用: sed, awk, grep的正则有细微差异, 难以记忆, 基本上一个正则表达式需要试很久. 而perl在onelinar写shell脚本中, 可以替换sed/awk/grep. 只需要记住统一的perl正则即可, 统一简洁好用.
2. 形式自由, 可以随心所欲. 用perl写脚本, 可以有多种写法. 想简洁就简洁, 想整洁就整洁, 风格自己定.
3. 繁杂的extension和精简的语言内核很吸引人. 函数(sub)和符号表(%::)都是first-citizen, 所以高阶函数和typeglob都用起来很爽.
4. 最最重要原因, 用perl的人, 内心强烈的认为perl比python好, 不用不知道这种偏好是多么强烈. 偏好是一种强烈的执念, 执念容易虚妄.
5. 其实ruby要比perl和python都好. 但脚本语言, 属于小语种, 熟悉了常用的一种, 就不想学其他小语种了.

❼ perl 、shell、python三种脚本语言那种好学、易用

perl、shell、python三种脚本语言的区别:

1、适用不同:shell是操作linux的基本,是必须学的。学shell就是学linux命令。perl有强大的正则表达式支持,对于文本处理非常强悍,玩linux不得不学。python作用一种面向对象的,能作为linux脚本的语言,学好之后能帮你很好地完成工作。

2、特点不同:Perl是一种能完成任务的语言。从一开始,Perl就设计成可以把简单工作简单化,同时又不失去处理困难问题能力的语言。它可以很容易操作数字,文本,文件和目录,计算机和网络,特别是程序的语言。

这种语言应该很容易运行外部的程序并且扫描这些程序的输出获取感兴趣的东西。而且它还应该很容易能把这些你感兴趣的东西交给其它程序做特殊的处理。当然,这种语言还应该很容易在任何现代的操作系统上可以移植地编译和运行。

shell提供了你与操作系统之间通讯的方式。这种通讯可以以交互方式(从键盘输入,并且可以立即得到响应),或者以shellscript(非交互)方式执行。

shellscript是放在文件中的一串shell和操作系统命令,它们可以被重复使用。本质上,shellscript是命令行命令简单的组合到一个文件里面。Shell基本上是一个命令解释器,类似于DOS下的command.com。

它接收用户命令(如ls等),然后调用相应的应用程序。较为通用的shell有标准的Bourneshell(sh)和Cshell(csh)。

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

3、优点不同:perl,用作文本处理比较好,可以作为系统的辅助工具。shell,用作系统维护、操作等方面。python,功能强大,模块多、跨平台能力好,完全面向对象,尤其适用做大型脚本程序的开发和快速开发。

(7)shellperlpython扩展阅读:

erl比shell+sed+awk更强大,但学习两者并不冲突,通常是学习shell做为脚本编程的入门基础。而Python在应用领域则与前两者有很大的差别,无太大的可比性。面向不同的任务,可以只需用到其中的一种,也可能三种都要用到,所以究竟该学谁不学谁,需要由面对的任务来决定。

总之,shell是基础,其他是进阶辅助。

Shell脚本通常都是以.sh为后缀名的,这个并不是说不带.sh这个脚本就不能执行,只是大家的一个习惯而已。所以,以后你发现了.sh为后缀的文件那么它一定会是一个shell脚本了。

test.sh中第一行一定是“#!/bin/bash”它代表的意思是,该文件使用的是bash语法。如果不设置该行,那么你的shell脚本就不能被执行。’#’表示注释。后面跟一些该脚本的相关注释内容以及作者和创建日期或者版本等等。

❽ 计算机病毒只感染磁盘上的可执行文件

(1)计算机数据信息大程度被破坏

一般会直接破坏数据信息源的病毒会在病毒激发的过程中对用户硬盘进行破坏,包括文件格式化,磁盘分区功能文紊乱,恶意自动删除文件或产生信息垃圾,改动文件本来的属性和对CMOS破坏等等。

(2)占用磁盘空间和破坏信息

一般用户磁盘空间是非常大的,一旦受到病毒攻击,用户磁盘空间自动会被病毒占用。病毒的占领方式主要为排挤磁盘的引导扇区自己占据磁盘的引导扇区,最后实行全覆盖,只要磁盘数据和文件信息被占用,所有的数据将会出现错乱,信息将会被自动修改。而文件病毒相反不会这样,它们在传染过程中一般只占据磁盘空间不会造成信息聚聚的丢失和缺失破坏。


病毒会破坏信息

(3)抢占系统资源

一般大多数病毒一旦传播进入电脑,在电脑里面的存留时间都是非常长久的,除少数病毒例外,如VIENNA、CASPER等特殊少数病毒例外。病毒进入电脑后由于自身长度较大,所以占据的内存空间也相对较大,磁盘空间内存减少,一些软件和程序就会无法进行,严重系统会自动停运。另外病毒也会干扰系统的重启和正常运行,因为计算机的操作系统自动终端技术程序一般被病毒终端破坏干扰。

(4)降低计算机运行速度

病毒进入计算机网络系统不仅会干扰系统正常运行,还会在运行速度方面进行非干扰,具体表位为以下几大方面:病毒会加剧对电脑的工作状态的监视进程,也就是说会增大电脑运行负荷。有些病毒功能强大,一旦进入用户计算机系统,占据磁盘后为防止主人破解是识别病毒,这些病毒会自动给自己进行加密,所以计算机的cpu运行速率较正常情况下会加快,计算机只有先将解密程序打开后才能对病毒释放破解,电脑才能正常工作运行,但是正常运行结束后,病毒又会重新占据磁盘给自己重新加密。综上所述,病毒一旦感染电脑后,计算机系统的运行程序被打乱,导致计算运行负荷增加,运行速度自然会变慢。软盘也会受之影响,发出噪音,读写不规范。

❾ 为什么Python被称为“胶水语言”

胶水语言,原本是Python针对一门叫做perl的语言来讲的。。。。在很长一段时间里,perl语言都是python面临的最大竞争对手。。就和java与C#之间的情况差不多。。
perl语言是捧着金饭碗出生的,刚一出生,就有当时最主流的操作系统Unix保驾护航,成为了Unix内置的标准件,一大群的编程教父为其代言,更少不了一大群疯狂追捧的铁杆粉。。。在很短的时间内,就建立起了一批庞大的用户群,被称为“梦幻脚本语言”。一时之间,所向无敌。
大概两年之后。。与Perl采用同样设计思路的另一门语言,Python诞生了。。一出生地位便十分尴尬。。。。因为与perl语言作用重叠,而perl语言又占据了Python可以发挥的几乎一切领域。。无论Python如何献殷勤,抛媚眼,最终也没能攀上Unix这个爹。。只好硬着头皮,以小三的身份,嫁进了Linux的门。。。
作为shell和perl之后,第三种嫁入Linux大院儿的语言,python为了凸显自己的存在价值,便以胶水语言自居。。。即可以在shell与perl之间和谐共处。。。做了几年小三之后,随着Unix闭源,Unix阵营的迅速消亡。。Perl的娘家突然之间倒台了。。
Linux把Perl作为标准件的主要原因,是为了兼顾Unix操作习惯。。。由于Unix阵营的倒台。。Perl也就不像以前那么得宠了。。Python也逐渐开始做一些“本该由Perl来做的事情”。。。随着后来Python越来越“不守本分”。。导致Perl的地位开始下滑。。直到最后双方对调。。Python转成了正房,Perl变成了小三。。
今天的Python,要风得风,要雨得雨,在Linux平台更是唯我独尊,早就不是当年的胶水语言了。。。
————以上为个人2015年的回答————
本人做出以上回答时,Python还是个小语种。当时本人只是站在“动态语言”的立场下进行回复,而不是站在“所有编程语言”的立场之下。
当时本人实在没想到,四年之后,Python会变得这么火,而且火的有些过头。因此对之前的回复进行一些补充。
但由于历史问题导致,Python是一门动态语言,相对于JAVA,C#之类的静态语言来说,并不适合编写较大的程序。尽管编写代码很省事儿,但却难以维护,后续问题较多。因此Python并不能替代静态语言,更适合作为一门辅助语言来使用。

❿ (Python派森平台)有什么做用

用于运行由python平台编写的程序,可以说成解析器,就像你安装jar游戏要用到java平台,只是java平台手机本身就有,不用安装而已

热点内容
php表单注册 发布:2025-01-11 18:43:02 浏览:160
虚拟存储功能 发布:2025-01-11 18:43:01 浏览:887
ninjaandroid 发布:2025-01-11 18:26:10 浏览:526
华为的编译器可以用几个软件 发布:2025-01-11 18:18:18 浏览:620
python中的turtle 发布:2025-01-11 18:06:08 浏览:399
罗布乐思账号密码手机号多少 发布:2025-01-11 18:00:55 浏览:403
在广州什么配置的车才能跑滴滴 发布:2025-01-11 18:00:52 浏览:893
安卓手机哪个生态好 发布:2025-01-11 17:56:01 浏览:274
数据库数据的一致性 发布:2025-01-11 17:30:45 浏览:710
手机怎么设置手势安卓 发布:2025-01-11 17:15:54 浏览:965