perl和python

1.perl和python选哪个

就 语法来看,Python比Perl优美得多。Perl里面充满了像$!和$_这类的天书标记,初学的时候每读一段代码,就会碰到几个从来没见过的标记,然 后过两个星期,他们又以全新的面目出现在我面前。在我看来,这决不是什么紧凑,只是疯狂。不过同样的尼采,有的人看到的是伟大的哲学家,有的人看到的只是 一个疯子。

类库,Python的类库不如Perl的多。但是这很大程度上是因为Python没有一个像CPAN这样的类库集散地。其实Python的类库也是很全的,只是要找。SourceForge是一个,此外还有freshmeat。就我自己的经验,有些类库是无意中找到的。比方说,我看IBM的 developer network,看到一个twisted,安装的时候读了它的README,发现还有pycrypto,和pyopenssl类库。

如 果你觉得Python的开发效率还不及C++,那只能说你对Python还是太不熟悉,不过有C++的底子,用不了多久你就会闯过这一关的。其实 Python的文本处理能力一点都不比Perl逊色。它的re模块的思路同java的regex很像,而中文处理则要用到codecs。真正学懂之后,你 会觉得Python模块的逻辑性很强。不像Perl,虽然很方便,但是一个一个模块之间没有什么必然的联系。

关 于Python的大型项目,最知名的就是Zope,然后有twisted(它既是一个类库,也是一个framework)。此外还有 gadfly,medusa(其实这两个是Zope的子项目,但是Perl没有这个重量级的产品吧),以及Chandler。这些都是纯Python的程 序。

2.Perl与Python的区别和优缺点到底在哪

(1)设计一个语言的初始目的决定了该语言将会内建什么功能:

perl初始是Larry为了格式化处理文本而创建的,所以内建了正则 ;python内建一个复数型别,猜测Guido最初一定是为了数值计算而创建了python。因此perl擅长文字处理,python擅长数值处理。

(2)应用领域和需求不一样:

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

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

(3) 关于强类型

Perl语言中,数据的类型,取决于数据所处的上下文。

Python语言中,数据类型,是数据自身确定的。Python因此一般被认为是强类型语言,而Perl则不是。

(4)关于 内置基础类型

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

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

(1)设计一个语言的初始目的决定了该语言将会内建什么功能:

perl初始是Larry为了格式化处理文本而创建的,所以内建了正则 ;python内建一个复数型别,猜测Guido最初一定是为了数值计算而创建了python。因此perl擅长文字处理,python擅长数值处理。

(2)应用领域和需求不一样:

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

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

(3) 关于强类型

Perl语言中,数据的类型,取决于数据所处的上下文。

Python语言中,数据类型,是数据自身确定的。Python因此一般被认为是强类型语言,而Perl则不是。

(4)关于 内置基础类型

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

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

3.python和perl有什么区别

为什么不使用Perl?

也许你以前并不知道,Perl是另外一种极其流行的开源解释性编程语言。

如果你曾经尝试过用Perl语言编写一个大程序,你一定会自己回答这个问题。在规模较小的时候,Perl程序是简单的。它可以胜任于小型的应用程序和脚本,“使工作完成”。然而,当你想开始写一些大一点的程序的时候,Perl程序就变得不实用了。我是通过为Yahoo编写大型Perl程序的经验得出这样的总结的!

与Perl相比,Python程序一定会更简单、更清晰、更易于编写,从而也更加易懂、易维护。我确实也很喜欢Perl,用它来做一些日常的各种事情。不过当我要写一个程序的时候,我总是想到使用Python,这对我来说已经成了十分自然的事。Perl已经经历了多次大的修正和改变,遗憾的是,即将发布的Perl 6似乎仍然没有在这个方面做什么改进。

我感到Perl唯一也是十分重要的优势是它庞大的CPAN库——综合Perl存档网络。就如同这个名字所指的意思一样,这是一个巨大的Perl模块集,它大得让人难以置信——你几乎用这些模块在计算机上做任何事情。Perl的模块比Python多的原因之一是Perl拥有更加悠久的历史。或许我会在comp.lang.python上建议把Perl模块移植到Python上的计划。

另外,新的Parrot虚拟机按设计可以运行完全重新设计的Perl 6也可以运行Python和其他解释性语言如Ruby、PHP和Tcl等等。这意味着你将来 或许 可以在Python上使用所有Perl的模块。这将成为两全其美的事——强大的CPAN库与强大的Python语言结合在一起。我们将拭目以待。

4.perl和python各自擅长什么领域

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

Python是面向对象的动态通用语言。广泛应用于网络编程、科学计算等多个不同的领域。适于脚本编程和快速开发,它最显著的特点是作为编译语言(如C)和脚本语言(如perl)之间的桥接语言,它具有的强大功能,可扩充性及面向对象的特征使其成为大规模应用程序开发工具。

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

6.做为脚本语言来说perl和python那个更有优势

呵呵,有资格就这个问题发表意见的人本来就不多,而且,即使是有资格的人,也未必能做到公平(心平气和),所以我在这里引用一句《Perl 高级编程》中的话:QUOTE:早在 COBOL 流行的时候,人类就已经登上了月球,可见如果不是把精力花在争论语言的孰优孰劣的话,就可以做很多事情。

另外,我再强调一下 Perl 的精神之一:Perl 崇尚用合适的办法解决合适的问题,如果你觉得有比 Perl 更适合你的问题的工具,那么请使用它吧!如果 Perl 在某方面尚不完善,那么请使用其它的工具吧。

perl和python

转载请注明出处代码入门网 » perl和python

资讯

python引用文件

阅读(15)

本文主要为您介绍python引用文件,内容包括python怎么引用其他文件的类,Python里如何引用文件,python引用别的文件类。在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如

资讯

pythonconfigparser

阅读(13)

本文主要为您介绍pythonconfigparser,内容包括PythonConfigParser可读取哪些类型的数据,是个什么概念,[python]ConfigParser读取带中文的ini文件。测试配置文件test.conf内容如下:复制代码代码如下:[first]w = 2v: 3c =11-3[second]sw=4test

资讯

pythonos.popen

阅读(15)

本文主要为您介绍pythonos.popen,内容包括python语句os.systemos.popen什么意思,如何操作pythonos.popen的返回,pythonsubprocess.Popen。os.system() 和os.popen()的区别返回的数据不同1 os.system(“ls") 返回0但是这样是无法获得到输出和返

资讯

centos7安装python

阅读(13)

本文主要为您介绍centos7安装python,内容包括centos7怎么安装python3,centos7怎么装python3,在centos7上安装并配置python3.6环境,怎样使用3.6.1版本。不要轻易更新Python版本,不然有可能会导致Linux很多命令不兼容新的版本yum install open

资讯

pythonsendto()

阅读(13)

本文主要为您介绍pythonsendto(),内容包括python3socket.sendto函数怎么写,pythonsmtplib怎么使用,『PythonKivy』什么是Kivy,以及Helloworld。python3.2 socket.send 修改传送数据必须是byteshttp://docs.python.org/py3k/libr

资讯

python的truefalse

阅读(15)

本文主要为您介绍python的truefalse,内容包括pythontruefalse问题,Python中False和True也可以作为普通字符串吗,Python内部是如何判断一个对象是True还是False。众所周知在Python 中常用的数据类型bool(布尔)类型的实例对象(值)就两个,真和假,分

资讯

pythonif逻辑运算

阅读(18)

本文主要为您介绍pythonif逻辑运算,内容包括python中的逻辑运算,Python的逻辑运算,Python的逻辑运算。逻辑运算并不限于布尔(boolean)型的变量/值。关键是一个变量/值是“相当于”True还是False。None、False、空字符串

资讯

python爬虫教程

阅读(12)

本文主要为您介绍python爬虫教程,内容包括如何入门Python爬虫,如何用最简单的Python爬虫采集整个网站,python爬虫入门需要哪些基础。从爬虫必要的几个基本需求来讲: 1.抓取 py的urllib不一定去用,但是要学,如果还没用过的话。 比较好的替代品

资讯

python文件函数

阅读(14)

本文主要为您介绍python文件函数,内容包括如何直接执行一个Python文件的内置函数,python如何调用.py文件的函数,python常用的系统函数。【python】如何在某.py文件中调用其他.py内的函数 假设名为A.py的文件需要调用B.py文件内的C(x,y)函数

资讯

pythonforitems

阅读(12)

本文主要为您介绍pythonforitems,内容包括python中怎么运行for循环,python中for循环放在后面要怎么理解,在python中fork,vinsubDict:listDict[k]=v这段代码是什么意思主要。i 等于9 因为闭包,lambda生成之后i引用的就是for循环中的i 建议你

资讯

pythoncsv写入文件

阅读(12)

本文主要为您介绍pythoncsv写入文件,内容包括python怎么写入csv文件,python怎么写入csv文件,csv文件怎么打开使用Python读取和写入CSV文件。import pandas as pd#任意的多组列表a = [1,2,3]b = [4,5,6] #字典中的key值即为csv中列名d

资讯

python文件引用

阅读(12)

本文主要为您介绍python文件引用,内容包括python怎么引用其他文件的类,Python里如何引用文件,怎么引用另一个python文件。在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如

资讯

kafkapython

阅读(14)

本文主要为您介绍kafkapython,内容包括如何使用python连接kafka并获取数据,如何升级新版本kafkapython,怎么卸载kafkapython。连接 kafka 的库有两种类型,一种是直接连接 kafka 的,存储 offset 的事情要自己在客户端完成。还有一种是先连接 z

资讯

python非空

阅读(11)

本文主要为您介绍python非空,内容包括python中怎样判断一个dataframe非空,python中怎样判断一个dataframe非空,python怎么判断读到得内容不为空。DataFrame有一个属性为empty,直接用DataFrame.empty判断就行。例如,copy你的DataFrame为test_

资讯

python引用文件

阅读(15)

本文主要为您介绍python引用文件,内容包括python怎么引用其他文件的类,Python里如何引用文件,python引用别的文件类。在导入文件的时候,Python只搜索当前脚本所在的目录,加载(entry-point)入口脚本运行目录和sys.path中包含的路径例如

资讯

pythonconfigparser

阅读(13)

本文主要为您介绍pythonconfigparser,内容包括PythonConfigParser可读取哪些类型的数据,是个什么概念,[python]ConfigParser读取带中文的ini文件。测试配置文件test.conf内容如下:复制代码代码如下:[first]w = 2v: 3c =11-3[second]sw=4test

资讯

pythonos.popen

阅读(15)

本文主要为您介绍pythonos.popen,内容包括python语句os.systemos.popen什么意思,如何操作pythonos.popen的返回,pythonsubprocess.Popen。os.system() 和os.popen()的区别返回的数据不同1 os.system(“ls") 返回0但是这样是无法获得到输出和返

资讯

centos7安装python

阅读(13)

本文主要为您介绍centos7安装python,内容包括centos7怎么安装python3,centos7怎么装python3,在centos7上安装并配置python3.6环境,怎样使用3.6.1版本。不要轻易更新Python版本,不然有可能会导致Linux很多命令不兼容新的版本yum install open

资讯

pythonsendto()

阅读(13)

本文主要为您介绍pythonsendto(),内容包括python3socket.sendto函数怎么写,pythonsmtplib怎么使用,『PythonKivy』什么是Kivy,以及Helloworld。python3.2 socket.send 修改传送数据必须是byteshttp://docs.python.org/py3k/libr

资讯

python的truefalse

阅读(15)

本文主要为您介绍python的truefalse,内容包括pythontruefalse问题,Python中False和True也可以作为普通字符串吗,Python内部是如何判断一个对象是True还是False。众所周知在Python 中常用的数据类型bool(布尔)类型的实例对象(值)就两个,真和假,分

资讯

pythonif逻辑运算

阅读(18)

本文主要为您介绍pythonif逻辑运算,内容包括python中的逻辑运算,Python的逻辑运算,Python的逻辑运算。逻辑运算并不限于布尔(boolean)型的变量/值。关键是一个变量/值是“相当于”True还是False。None、False、空字符串

资讯

python两个版本

阅读(16)

本文主要为您介绍python两个版本,内容包括python两个版本有什么不同,两个python版本,怎么确定哪个是在用的,windows怎么管理python两个版本。Python 2 与 Python 3 共存安装 Python 3.3 以上的版本时,Python会在C:\Windows文件夹下安装启

资讯

python黑客绝技

阅读(2)

本文主要为您介绍python黑客绝技,内容包括黑客们会用到哪些Python技术,我想成为一名黑客,我在学python,可是里面讲的多是游戏设计,能否,黑客们会用到哪些Python技术。学习是循序渐进的过程最常见的有两本python和黑客相关的书《python灰帽

资讯

python开发什么软件

阅读(2)

本文主要为您介绍python开发什么软件,内容包括python能用来开发什么软件,开发python用什么软件,Python可以开发哪些程序。Python开发软件可根据其用途不同分为两种,一种是Python代码编辑器,一种是Python集成开发工具,两者的配合使用可以极大的

资讯

python正则匹配url

阅读(2)

本文主要为您介绍python正则匹配url,内容包括请问如何使用python的正则表达式提取url链接,请问如何使用python的正则表达式提取url链接,怎么写url的python正则表达式。1.测试正则表达式是否匹配字符串的全部或部分regex=ur"" #正则表达式if r

资讯

pythonstrtobyte

阅读(2)

本文主要为您介绍pythonstrtobyte,内容包括python怎么将字符串转换为byte,pythonstr和byte的区别,python2.7.3中怎么将str转为bytes。public class Test { public static void main(String[] args) { //1. By

资讯

jointhreadpython

阅读(2)

本文主要为您介绍jointhreadpython,内容包括python线程join什么意思,pythonthreading一定要join吗,如何在python多线程join挂起后还能在主线程。Join的作用是众所周知的,阻塞进程直到线程执行完毕。通用的做法是我们启动一批线程,最后join这

资讯

vs2013python

阅读(2)

本文主要为您介绍vs2013python,内容包括vs2013怎么进行Python编程,vs2013怎么进行Python编程,visualstudio2013为什么支持python。方法/步骤1电脑上安装微软公司的VS2013,可以从dreamspark 上下载正版或通过其他途径获得,安装即可。2打开VS20

资讯

houdinipython

阅读(2)

本文主要为您介绍houdinipython,内容包括学习Houdini必须会python吗,学习houdini到底要不要掌握python,学习houdini到底要不要掌握python。Houdini应该不错。不过似乎某个rendering(名子不记得了),应该与python的集成更好。python是一个通用语

资讯

vimpythonide

阅读(2)

本文主要为您介绍vimpythonide,内容包括如何将vim变成一个强大的pythonide,在linux下面做python程序开发,用什么ide好,在linux下面做python程序开发,用什么ide好大家在用哪个工具。可以理解题主的需求,做机器学习的时候经常需要看具体代码,通

资讯

python大文件处理

阅读(2)

本文主要为您介绍python大文件处理,内容包括内存不足时,python如何处理大文件,python对文件进行处理,如何用python最快的获取大文件的最后几行。工作中经常会遇到处理日志文件的问题:为了得到日志的最新状态,我们需要获取日志文件的最后部分

资讯

python写出csv

阅读(1)

本文主要为您介绍python写出csv,内容包括python怎么写入csv文件,python怎么写入csv文件,如何用python读写csv。import pandas as pd#任意的多组列表a = [1,2,3]b = [4,5,6] #字典中的key值即为csv中列名d