为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

旁观者清 Python与Ruby各有千秋

2017-09-07 4页 doc 14KB 11阅读

用户头像

is_841159

暂无简介

举报
旁观者清 Python与Ruby各有千秋关于Ruby和Python之间的对比在网上有太多的口水,但我却没有发现真正有用的讨论,因为大家总是围绕双方的功能差异进行争辩,这样下去显得毫无意义,其实该有的双方都会有 有,要不然有一方肯定早已被另一方消灭。 :Python线程编程比Ruby应用的优点 虽然我个人更喜欢Python,但并不代表Python就比Ruby功能要多,要比Ruby强大,也无法教唆其他人也跟我一样选择Python,因为每个人的口味都不一样。因此, ,客观地列出双方的不同点能够有效地避免大量的口水之争,注意我们不谈语法上的差异,那完全没有意思,另外,如...
旁观者清 Python与Ruby各有千秋
关于Ruby和Python之间的对比在网上有太多的口水,但我却没有发现真正有用的讨论,因为大家总是围绕双方的功能差异进行争辩,这样下去显得毫无意义,其实该有的双方都会有 有,要不然有一方肯定早已被另一方消灭。 :Python线程编程比Ruby应用的优点 虽然我个人更喜欢Python,但并不代表Python就比Ruby功能要多,要比Ruby强大,也无法教唆其他人也跟我一样选择Python,因为每个人的口味都不一样。因此, ,客观地列出双方的不同点能够有效地避免大量的口水之争,注意我们不谈语法上的差异,那完全没有意思,另外,如果你觉得本文列出的项目有带有主观色彩的,你也可以谈谈你的看法。 Ruby在类主体中有类引用 在Ruby中,你可以引用类主体中的类(self),在Python中就不行。Ruby代码示例: class Kaka puts self end 这里的self是一个类,上面这串代码将会输出“KaKa”,在Python中,没有办法输出类名或从类定义主体中访问类。 Ruby中的所有类都是可变的 它允许你为核心类开发扩展,下面是一个rails扩展示例: class String def starts_with?(other) head = self[0, other.length] head == other end end Python(假设没有’’.startwith方法): def starts_with(s, prefix): return s[:len(prefix)] == prefix 你可以在任何序列(不只是字符串)上使用它,但必须明确地导入它,如: from some_module import starts_with Ruby有类似Perl的脚本功能 Ruby有一个regexps类,$-变量,awk/perl逐行输入循环和其它功能使它更适合编写小型shell脚本。 Ruby有类延续 Ruby有这个特性都是得益于callcc语句。在Python中,你可以用多种不同的技术创建延续,但语音本身并没有内置支持这项特性。 Ruby有块 使用do语句,你可以在Ruby中创建多行匿名函数,它将会作为一个参数传递给do前面的方法。在Python中,你可以传递一个方法或使用发生器实现同样的目的。 Ruby: amethod { |here| many=lines+of+code goes(here) } Python(Ruby块与Python中不同的构造对应): with amethod() as here: # `amethod() is a context manager many=lines+of+code goes(here) 或 for here in amethod(): # `amethod()` is an iterable many=lines+of+code goes(here) 或 def function(here): many=lines+of+code goes(here) amethod(function) # `function` is a callback 有趣的是,Ruby中调用块的语句叫做“yield”,在Python中它将创建一个发生器。 Ruby: def themethod yield 5 end themethod do |foo| puts foo end Python: def themethod(): yield 5 for foo in themethod(): print foo 虽然原理不一样,但结果非常类似的。 Ruby支持更容易的功能性编程(管道式) myList.map(&:description).reject(&:empty?).join("\n") Python: descriptions = (f.description() for f in mylist) "\n".join(filter(len, descriptions))
/
本文档为【旁观者清 Python与Ruby各有千秋】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索