python 释放内存_学了4年C++后,我转向了Python
通常,程序員會認(rèn)為 Python 編碼比較簡單,即便是在校學(xué)生也可輕松入門,這是大多數(shù)轉(zhuǎn)型 Python 程序員的最初想法。當(dāng)然,Python 程序員現(xiàn)在的社會需求更大,薪資也相對更高一些。隨著 C++ 的日益增負(fù),不少程序員都抱怨“希望 C++ 別再加了,實在是學(xué)不動了”,本文講述了一名具備四年工作經(jīng)驗的 C++ 程序員轉(zhuǎn)行學(xué)習(xí) Python 的心路歷程。
1 由深入淺最近幾年,從 C++ 轉(zhuǎn)型 Python 的程序員不在少數(shù),畢竟由深入淺易,由淺入深難。學(xué)習(xí) C ++ 感覺就像在海里深潛,潛的越深,景色越美,但需要付出更多時間和精力。總的來說,最終所覆蓋的距離并不會很大。Python 有點像浮潛,很容易觸碰,如果可以持續(xù)投入學(xué)習(xí),很快就可以有所領(lǐng)悟。從這兒可以清楚看出,每種語言都應(yīng)該在正確的地點和時間使用。
2 C ++ 語法更嚴(yán)格,Python 庫更豐富C ++ 語法更加嚴(yán)格,一旦出現(xiàn)編碼錯誤,基本會連帶發(fā)生很嚴(yán)重的后果。C++ 程序員通常需要深入了解計算機(jī)、編譯器和編程語言語法。當(dāng)深入了解時,我們可以看到并被一些事物所吸引,比如編譯過程和內(nèi)存管理。
作為 C ++ 程序員,大部分人往往更關(guān)心語法調(diào)整和場景用例,注重內(nèi)存分配及釋放。程序更加獨立,編程人員往往清楚知道代碼會發(fā)生什么,同時認(rèn)為其他人寫的代碼不太可靠,更容易出錯,并且可能會破壞內(nèi)存用量。
C++ 程序員的主要日常工具是 Vim,有許多用于編寫代碼的插件,用于調(diào)試的 GDB 和用于分析內(nèi)存使用和錯誤的 Valgrind,可能用 g++ 編譯并編寫 Makefile。此時,作者并不認(rèn)為 IDE 會讓其受益,反而非常依賴編譯器來查找錯誤類型。
3 轉(zhuǎn)型 Python,要學(xué)會放手轉(zhuǎn)換 Python 需要學(xué)習(xí)的第一件事就是放手,程序員不必再了解底層發(fā)生了什么,內(nèi)存是否被分配或釋放,這些都沒有關(guān)系。因為 Python 可以使用其他人編寫的代碼,這些代碼被打包成庫,程序員可直接在代碼中調(diào)用,可以節(jié)省時間并幫助更快地編寫代碼。這并不意味著編碼速度變慢,或者依賴未維護(hù)和無功能的庫,但重點肯定是不同的。
當(dāng)作者開始用 Python 編寫代碼時,首先用 Python 編寫了 C ++ 代碼,雖然這也可以生成最終運行效果,但并沒有從 Python 語言中獲益。只有以更“Pythonic”的方式編寫并使用庫以及更高級的概念(如生成器,裝飾器和上下文)時,Python 編碼才得到改進(jìn)。
作為一名 Python 開發(fā)人員,傾向于首先考慮能解決手頭問題的庫。Python 擁有豐富的庫生態(tài)系統(tǒng)和支持社區(qū),幾乎可以完成任何事情。目前比較常用的庫是,NumPy 用于數(shù)值計算,OpenCV 用于計算機(jī)視覺,json 用于讀取 json 文件,SciPy 用于科學(xué)計算,sqlite3 用于數(shù)據(jù)庫。
目前,作者使用的日常工具是帶有 IdeaVim 插件的 PyCharm(一個 IDE),一個功能強大的調(diào)試器,比默認(rèn)的 Python 調(diào)試器 pdb 更友好,也會使用 pip 來安裝需要的庫。除非真的需要,否則不會再監(jiān)視內(nèi)存使用情況。實用技巧
如果是 C ++ 開發(fā)人員,并且考慮開始使用 Python 編寫代碼,以下是作者的建議:
擺脫舊習(xí)慣。停止使用 C ++ 編譯器作為調(diào)試器,不過度優(yōu)化內(nèi)存使用情況。避免編寫類似 C ++ 的代碼,盡量不依賴類型。
培養(yǎng)新習(xí)慣。開始使用庫寫 Pythonic 代碼(但不要過度)。
保持可讀性。使用更復(fù)雜的概念,例如生成器、裝飾器、上下文等,可以試試 PyCharm。
使用 C ++ 和 Python 公共庫。某些 C ++ 庫(如 OpenCV 和 QT)具有 Python 接口,程序員很容易在 Python 中使用相同的庫,而不是從頭開始學(xué)習(xí)新庫。
不要忘記二者的本質(zhì)區(qū)別。Python 有時太慢或不適合任務(wù),這就到了運用 C ++ 知識的時候了。在 Python 中使用 C ++ 代碼的方法有很多,比如 SIP、ctypes 等。
當(dāng)轉(zhuǎn)換到一種新的編程語言,尤其是與個人習(xí)慣完全不同的語言時,需要花費大量時間學(xué)習(xí)、挖掘、發(fā)現(xiàn),最重要的是要明白不僅語言應(yīng)該改變,編碼風(fēng)格和工作方法也要改變,因此需要提前做好大量準(zhǔn)備工作。
英文原文https://medium.freecodecamp.org/how-i-went-from-c-to-python-a-conceptual-change-8bf29d059428
點個好看少個 bug ?
總結(jié)
以上是生活随笔為你收集整理的python 释放内存_学了4年C++后,我转向了Python的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 买第三便宜帽子
- 下一篇: C++根据输入日期YYYY-MM-DD判