某同學問小優:"小優小優,學Java好還是學Python好?”
小優跑去問大神(90度鞠躬):"大神,大神,學Java好還是學Python好?”
java轉python,大神嫌棄的看了我一眼,繼續妙手生花的敲代碼,良久,飄過來一句:
"初學者才爭論語言,我們只看心情。”
我……
python編程、"那他們的區別是什么?”
"區別就是他們是否適合你們這些小白。”
OK,不愧是大神,那就讓我們初學者,
python3。自生自滅吧!不,自力更生吧!
下面小優就帶著大家一起來看一下"Python和Java的區別!”
Python
java c python?>>>優點 :
語法簡潔優美, 功能強大,
標準庫跟第三方庫灰常強大,
應用領域非常廣,跟PHP形成了鮮明的對比!
語言方面, 舉幾個例子:
一切都是對象!!!
類(class本身)/函數/類方法是callable的對象
因為是對象,所以你當然可以傳來傳去啦. 比如:
List表達式(其他好多語言也有,但是我最喜歡python的寫法):
把”1023″變成 [1, 2, 3]
(當前你可以用Lisp風格的: map(int, filter(lambda x: x != "0”, "1024”)))
對dict也是類似:
yield關鍵字:
當你需要返回很多東西然后一個一個用的時候, 你可以一次返回一個
裝飾器@:
把something_heavy()返回的結果緩存起來(以函數名+args為緩存的鍵值,只緩存最近使用的10條)
運算符重載:
試試numpy, 你會驚呆的, 操作向量/矩陣跟基本類型一樣方便
>>>缺點:
慢!
目測python是最慢的腳本語言,比V8上的JS還慢不少。 (研究一下描述符,你會發現python調用對象方法的開銷好大!)
但是python創始人說了, 一般程序的瓶頸在于20%的代碼, 所以你可以把那20%的代碼用C重寫(因為python是膠水語言,顧名思義,在多個語言之間左右逢源,游刃有余,用C重寫部分代碼當然很easy啦)
同時,你可以試試PyPy, 引入了JIT技術。
動態類型
有人說: 動態類型寫時爽, 重構起來是災難。
對于不寫unittest, 不做代碼覆蓋率測試的人來說, 動態語言當然是危險的, 拼寫錯誤都可能被隱藏, 重構?別搗亂!
python創始人有話說: "如果你認為編譯器可以幫你解決所有問題,那你一定干編程沒多久,不管什么程序,都需要寫testcase, 既然要寫testcase, 那么動態類型不是問題!”
Java
>>>優點 :
用幾個詞形容一下Java語言:優美,嚴謹,健壯,不易出錯。
當然,使用也非常的廣泛: 常年盤踞編程人員數量排行榜第一名!
各種庫也非常多: akullpp/awesome-java · GitHub
同樣的代碼, 相比C++(甚至python), Java代碼出BUG的概率要小點(當然,寫的時候一般會比python長)
Java從語言設計上盡量避免了程序員犯錯,比如自動垃圾回收, 拋棄無符號類型, 安全的枚舉,編譯期泛型檢查(Java1.5之后加入的泛型,但是只是用來做編譯器檢查,運行時跟以前一樣),強制的異常處理(遇到異常必須catch或者申明throws) 等等(當然,某些特性python也有)
Java標準庫和好多第三方代碼都充斥著濃濃的設計感!!!
各種設計模式到處可見。
從下面的語句可以看出一點來:
好多字, 看它們的:
C:
Python:
Java代碼多,但是API可復用行更強,選擇更多(我想一次讀完文件,不要buffer呢?)
因為健壯安全,所以Java成了企業級后臺的標準。想想銀行后臺, 關鍵地方出點bug可不得了。
>>>缺點 :
要敲好多代碼, 參考上面的例子…
沒有Python那些奇葩特性,靈活性不足,怎么寫你還是Java, 而Python可以寫的像Javascript/Lisp/Matlab…..
簡單來說, Python是給人設計的(人生苦短,請用Python), C/C++更像是為機器設計的,而Java則介于兩者之間。
如果你是高手,寫出的代碼沒什么bug,也不用怎么調試, 那推薦你用python(前提是他的慢你能忍受。 當然,高手眼里, 他會的就是最好的….)
如果你寫的代碼bug多,大部分時間在調試代碼,你可能需要了解一下Java, 或者寫足夠多的testcase。
以上就是小優分享給大家的
Python or Java
對于Java和Python,更多疑問or興趣
歡迎掃碼參加免費體驗課
IT行業大咖現場為你解答
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态