Ruby和Python的语法比较
2010-04-19 10:38
465 查看
Ruby和Python的语法比较 | |
其实Ruby和Python非常接近,比大多数别的语言要接近的多,所以喜欢用啥就用啥(大实话,虽然也是废话)。语法上的差别虽然有那么一点,大部分是syntax sugar,我斗胆稍微列几个(python我也忘得差不多了,不对的大家尽管来鞭尸吧),但是主要差异还是设计思想上的:灵活vs明确. 我不认为两者在生产力上会有什么差别,如果你熟悉的话。*注意,仅限语言本身的比较。 本文推荐:Ruby入门教程与技巧大全 Ruby和Python的比较列表 1. ruby的case可以匹配很多东西:范围/数组,对象,正则表达,python没有case/switch而使用if/else比较死板点 2. python的缩进很漂亮,虽然有时会造成些许麻烦。ruby的end蛮难看的,所以大家都被逼当one liner(玩笑) 3. 感觉上ruby比python更OO,当然这也可能是因为python不提倡用那些改变对象内部构造的‘伎俩’造成的错觉 4. python有list comprehension, ruby没有:( 5. python有真正的keyword argument, ruby用hash模拟,当然实际用起来没什么差别 6. python的self很讨厌,ruby没有那种繁琐的东西 7. reflection,ruby内置了很多方法,比如object.methods,而python把这些信息存在特殊的字典里。差不多 8. ruby的block功能很强,python的lambda只能返回单一值 9. ruby的open class已经声明远播,可以玩出2.days.ago这样的花样,python好像没法直接修改内置类也反对这么做。 10. python需要用@classmethod修饰声明类方法,ruby是内建 11. ruby有单子方法,也就对对象单独定制,python不知道有没有类似概念 12. ruby有method_missing机制,python可以使用__getattr__截获未定义方法(from qiezi) 13. ruby使用单继承+mixin,python使用多重继承,不过python也有mixin 14. ruby有attr_*系列语法helper,省却自己写一堆setter/getter, python的property方法还是得自己写setter/getter 15. ruby和python都使用duck typing,不过python也有一套显式的interface机制(从zope3并入内核了么?) 16. ruby的函数调用括号是可省的,稍微少敲几下键盘。python默认没括号也不带参数的话返回函数本身的一个引用。 17. 我不清楚python的meta programming能到什么程度,只好等大牛来说说了。只是觉得pythoner不常用那个,也许觉得会把程序逻辑搞得晦涩不明。 18. ruby从perl继承了一部分难看的东西,比如很多预定义的$x常量 19. ruby内建正则表达,方便一点 20. ruby的yield是用来call block的。而python的yield是用来给generator输入输出值的。 21. python的库给我感觉命名规范有点不统一,有些方法用snake_case有些则用CamelCase,也许是库太多了遗留下的历史问题 22. python的三引号很漂亮,ruby的<<-XX...XX太难看了,也可以用%q{...}包裹多行文字(from qiezi) 23. ruby的类库设计中喜欢给方法添加别名,方便记忆。 另: ruby官方网站也提供了一些Ruby和Python基本的比较。 转 发布者:51CTO 日期: 2009-08-14 13:45:00 |
相关文章推荐
- php,python,javascript,perl,ruby的语法比较
- Perl、PHP、Python、Java和Ruby的比较
- Matlab与Python的语法比较
- Perl、PHP、Python、Java和Ruby的比较
- 脚本语言性能比较:Ruby,Io,PHP,Python,Lua,Java,Perl...
- python 3.x 与python 2.x语法细节差异比较
- Ruby和Python的比较
- Perl,Python,Ruby,Javascript 四种脚本语言比较
- 后台开发语言的比较 java php python asp.net ruby on rails
- python语法[global与nonlocal比较]
- Perl、PHP、Python、Java和Ruby的比较
- 脚本语言性能比较:Ruby,Io,PHP,Python,Lua,Java,Perl...
- python的except语法比较奇怪
- [比较编程]Sorting in Ruby and Python
- 比较Perl、PHP、Python、Java和Ruby
- 语法比较:Julia,Matlab,Python
- Python与Ruby比较
- c++、c#、Python、GO语言基本语法比较
- Ruby和Python的语法差异(2)
- Ruby和Python的比较