Ruby有Python没有的,反之亦然?
已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 关于Python与Ruby的讨论很多,我都发现它们完全无济于事,因为它们都绕开了为什么功能X吸收了语言Y或声称语言Y没有X的事实,尽管实际上确实如此。我也确切地知道为什么我偏爱Python,但这也是主观的,并且不会帮助任何人选择,因为他们在开发中的品味可能不如我。 因此,客观列出差异是很有趣的。因此,没有“ Python的lambdas很烂”。相反,请解释Ruby的lambda可以做什么,而Python则不能。没有主观性。示例代码很好! 请在一个答案中没有几个差异。并投票支持您所知道的正确和不正确(或主观)的投票。同样,语法上的差异也不是很有趣。我们知道Python用缩进来做,而Ruby用括号来做,而@在Python中被称为self。 更新:这是现在的社区Wiki,因此我们可以在此处添加较大的差异。 Ruby在类主体中有一个类引用 在Ruby中,您已经在类主体中引用了该类(自身)。在Python中,直到类构造完成后,您才可以引用该类。 一个例子: 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(假设没有''.startswith方法): def starts_with(s, prefix): return s[:len(prefix)] == prefix 您可以在任何序列上使用它(不仅是字符串)。为了使用它,您应该显式导入它,例如from some_module import starts_with。 Ruby具有类似Perl的脚本功能 Ruby具有一流的正则表达式,$变量,awk / perl逐行输入循环以及其他功能,使其更适合于编写小型shell脚本,这些脚本会压缩文本文件或充当其他程序的粘合代码。 Ruby具有一流的延续性 感谢callcc声明。在Python中,您可以通过各种技术来创建延续,但是该语言没有内置支持。 红宝石有块 …