免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 24860 | 回复: 101

较之Perl - Python的语法真奇怪 [复制链接]

论坛徽章:
0
发表于 2007-01-20 11:38 |显示全部楼层
好多人都在拿Perl与Python比较,偶也翻了下Python的书,看到这样的用法:

  1. def make_repeater(n):
  2.     return lambda s: s*n

  3. twice=make_repeater(2)
  4. print twice('word')
复制代码


不明所以...把代码copy下来运行下才知道是什么意思.
想起Perl的替代函数该这样写:

  1. sub make_repeater
  2. {
  3.     my $n = shift;
  4.     return sub { $_[0] x $n };
  5. }

  6. my $twice = make_repeater(2);
  7. print $twice->('word');
复制代码



Python这种用法是否令人迷惑?偶觉得Perl的写法要清晰得多.
(当然偶丝毫没有认为Python不如Perl,大家不要藉此挑起争端哈.)

论坛徽章:
4
处女座
日期:2013-09-01 19:30:07双鱼座
日期:2013-09-28 10:58:45双子座
日期:2014-05-23 08:32:0215-16赛季CBA联赛之八一
日期:2016-04-12 19:55:42
发表于 2007-01-20 11:46 |显示全部楼层
原帖由 兰花仙子 于 2007-1-20 11:38 发表
好多人都在拿Perl与Python比较,偶也翻了下Python的书,看到这样的用法:

  1. def make_repeater(n):
  2.     return lambda s: s*n

  3. twice=make_repeater(2)
  4. print twice('word')
复制代码


不明所以...把代码 ...


俺觉着Python要比Perl略简洁一些
当初学了一阵子Python,老是和Perl混起来,就没再用Python了

论坛徽章:
0
发表于 2007-01-20 12:01 |显示全部楼层
先入为主

论坛徽章:
0
发表于 2007-01-20 12:34 |显示全部楼层
据说Perl程序员这几年有向Python转移的倾向,但我个人不太明白,用了一下Python觉得并不是很好用,最不解的是有严格的缩进规定,打多个tab都不能正确解释……

论坛徽章:
0
发表于 2007-01-20 12:45 |显示全部楼层
有些人认为python的严格缩进好,有些人觉得烦,我是后者,所以一直用 perl :-)

论坛徽章:
0
发表于 2007-01-20 13:23 |显示全部楼层
python的缩进便于读代码的人
哈哈,写代码的如果养成了习惯,应该也是不错的

论坛徽章:
0
发表于 2007-01-20 14:06 |显示全部楼层
嗯,个人习惯的问题。在 Perl 和 Python 中,我还是比较喜欢 Perl 的。当然,仅仅是个人哲学。这个世界上的哲学太多啦。

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
发表于 2007-01-20 15:00 |显示全部楼层
Python 的缩进我觉得是可以接受的,因为即使是语言不严格要求缩进,好的编程风格也几乎是严格要求缩进的,
因此 Python 这么做我觉得很好,但是唯一带来的一点缺陷就是:不能写单行程序。
虽然有些 Python 爱好者自诩 Python 如何灵活,甚至可以写单行程序,但是我觉得 Python 的单行程序跟 Perl 是没法比。

至于仙子提出的这个案例,我觉得 Python 的 lambda 要比 Perl 的闭包设计得更加简洁,lambda 是 Python 极具特色的东西,我一直是十分欣赏的,Perl 的闭包相比起来要难理解多了。不过在功能上来讲,Perl 的闭包可以写任何东西,但是 Python 的 lambda 只能写单行的小功能。这是它的一大限制。
不过好在不论是相对于面向过程还是面向对象的编程方法来讲,FP 的应用范围还不是很广,大多数程序员也并不熟悉它,因此 lambda 的功能不足和 closure 的过分复杂一样都不是什么缺点,毕竟它们的用户群都不是很多,一般人的程序中都很少用到。

论坛徽章:
0
发表于 2007-01-20 17:45 |显示全部楼层
玩python的要么是中规中矩的产业工人要么是非IT专业人士。玩perl的是看透人生的嬉皮士。

论坛徽章:
0
发表于 2007-01-20 18:17 |显示全部楼层
我倒是觉得Python工整一点。嘿。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会 限时8.5折

【架构革新 高效可控】2020年8月17日~19日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP