Ruby和Python的文法比較

來源:互聯網
上載者:User
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 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.