自:
http://developer.51cto.com/art/200912/169306.htm
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与Python语法比较下,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语法比较。