微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

编程从 Python 到 Ruby转型的异同点

Ruby 是……

@H_404_2@一门开源的动态编程语言,注重简洁和效率。Ruby 的句法优雅,读起来自然,写起来舒适。

@H_404_2@当您初次看到 Ruby 语言代码的时候,它很可能让您想起您使用过的其他编程语言。这是当然的, 因为 Ruby 的大部分语法是 Perl、Python 和 Java(以及其他语言)的用户所熟悉的。 如果您曾经使用过这这些语言,学习 Ruby 就是小菜一碟。

Python 是......

@H_404_2@另一个很好的通用编程语言。从 Python 到 Ruby,你会发现 Ruby 需要学习更多一点的语法。

相似点

@H_404_2@Ruby 与 Python 一样的地方……

  • 有交互式命令解释器(叫做 irb)。
  • 可以在命令行阅读文档(使用 ri 命令代替 Python 的 pydoc)。
  • 没有特殊的行终结符(除了通常的换行符)。
  • 与 Python 的三个引号类似,字符串字面量可以跨越多行。
  • 方括号用于列表,大括号用于字典(Ruby 中叫做 哈希)。
  • 数组操作相同(数组相加,会得到一个长数组;a3 = [a1, a2] 会得到一个二维数组)。
  • 对象是强、动态类型。
  • 一切皆是对象,变量只是对象的引用。
  • 尽管关键字有些许不同,但异常处理方式是一致的。
  • 拥有嵌入式文档工具(Ruby 的工具叫 rdoc)。
  • 同样好地支持函数式编程,比如:一级类型函数,匿名方法和闭包。

相异点

@H_404_2@Ruby 与 Python 不同的地方……

  • 字符串是可变类型。
  • 可以新建常量(无意改变的变量)。
  • 有一些强制习惯用法(例如:类名以大写字母开头,变量以小写字母开头)。
  • 只有一种列表容器,且是可变类型。
  • 双引号字符串可以转义(像 \t),有特殊的“替代表达式”语法(不用像 "字符串" + "相" + "加"这样,允许插入 Ruby 表达式结果到其他字符串)。单引号字符串与 Python 的 r"原始字符串" 一样。
  • 没有什么“新式”或者“旧式”类定义写法。只有一种写法( Python 3 以上的版本没有这个问题,但不能向下兼容 Python 2)。
  • 不能直接访问属性。但在 Ruby 中,一切皆方法调用
  • 方法调用的括号是可选的。
  • 有 public、private、protected 三种强制的访问控制类型,不像 Python 里面是用变量名加下划线表示。
  • “混入(mixins)”替代多重继承。
  • 你可以增加修改内置类的方法。俩语言都允许你随时打开、修改类,但 Python 无法修改内置类,Ruby 无此限制。
  • true 和 false 代替 True 和 Falsenil 代替 None)。
  • 判断真值时,只有 false 和 nil 当做假值。其余一切皆为真(包括 0、 0.0、 "" 和 [])。
  • elsif 代替了 elif
  • require 替代 import。其他情况,使用相同。
  • 通常,代码(而不是之下的字符文档)的注释用来生成文档。
  • 虽然有很多语法糖需要记忆、学习,这也使得 Ruby 非常有趣且有效率。
  • 变量设置后无法取消(类似 Python 的 del 声明)。你可以将其重置为 nil 让 GC 回收旧的内容,但它仍然存在于符号表中。
  • yield 关键字作用是不一样的。在 Python 中,它会记住上一次返回时在函数体中调用的位置。外部代码有责任继续执行函数。而在 Ruby 中,yield会执行作为方法最后一个参数传入的方法,然后立即执行。
  • Python 支持一种匿名函数lambdas。而 Ruby 支持 blocksProcs 和 lambdas

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐