您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“C++轉(zhuǎn)Python的技巧有哪些”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“C++轉(zhuǎn)Python的技巧有哪些”吧!
C++給人的感覺(jué)就像是一頭扎進(jìn)奇幻神秘的大海里——它是如此美妙,但需要更多學(xué)習(xí)和訓(xùn)練。總的來(lái)看,你游過(guò)的水面不會(huì)很大。而 Python 有點(diǎn)像潛水——把頭伸進(jìn)水里就能看到它的美,但你不會(huì)太深入,而是在淺水里游啊游,可以輕易地游過(guò)很大一片地方。兩種語(yǔ)言如此不同,所以適用的場(chǎng)景也不同。
C++更為嚴(yán)格,在你犯錯(cuò)的時(shí)候會(huì)更加嚴(yán)厲地懲罰你。一次都沒(méi)有收到過(guò) Segmentation fault 的編碼會(huì)話算不上有效的編碼會(huì)話。因此,你需要更加了解計(jì)算機(jī)、編譯器和語(yǔ)言。如果深入下去,你會(huì)被其中蘊(yùn)含的美所打動(dòng),如編譯過(guò)程和內(nèi)存管理。
作為一名 C++程序員,我更關(guān)心句法調(diào)整和奇怪的例子。我一直知道我是怎么分配、釋放內(nèi)存的。我寫(xiě)的程序更加獨(dú)立,因?yàn)槲腋胫雷约旱拇a內(nèi)部究竟發(fā)生了什么。我主要是覺(jué)得其他人編寫(xiě)的代碼不太可靠,更容易出錯(cuò),并且可能會(huì)增加內(nèi)存使用量。
Vim、GDB 和 Valgrind 是我用到的主要日常工具*。*Vim 有很多用于編寫(xiě)代碼的插件,GDB 用于 debug,Valgrind 用于分析我的內(nèi)存占用和錯(cuò)誤。我用 g++編譯,自己寫(xiě) Makefiles。那時(shí)候,我覺(jué)得 IDE 沒(méi)什么用,還會(huì)拖慢速度,讓我失去接觸代碼的機(jī)會(huì)。回想起來(lái),我非常依賴(lài)編譯器來(lái)查找類(lèi)型錯(cuò)誤。
轉(zhuǎn)向 Python 時(shí),你需要學(xué)習(xí)的第一件事情就是如何放手:你不知道代碼的底層到底發(fā)生了什么,內(nèi)存被分配到哪里、釋放到哪里,但沒(méi)關(guān)系。你也會(huì)被鼓勵(lì)使用其他人寫(xiě)的封裝為庫(kù)的代碼,這能幫助你節(jié)省時(shí)間,提高編碼速度。這并不意味著你需要寫(xiě)慢如蝸牛并依賴(lài)于無(wú)維護(hù)和無(wú)功能的庫(kù)的代碼,其中的關(guān)鍵是很不同的。
剛開(kāi)始用 Python 寫(xiě)代碼時(shí),我用 Python 寫(xiě) C++。這也行得通,但我并沒(méi)有從這門(mén)語(yǔ)言中獲得任何收益。當(dāng)我開(kāi)始以更加 Python 式的風(fēng)格來(lái)寫(xiě)代碼并使用庫(kù)以及更多高級(jí)概念(如 generators、decorators 和 contexts)時(shí),我的編程技巧才得到提升。
作為一個(gè) Python 開(kāi)發(fā)者,我傾向于首先尋找能解決眼前問(wèn)題的庫(kù)。Python 擁有豐富的庫(kù)生態(tài)系統(tǒng)和社區(qū)的支持。有很多具有專(zhuān)門(mén)用途的庫(kù)。這些是我經(jīng)常會(huì)用到的庫(kù):NumPy(數(shù)值計(jì)算)、OpenCV(計(jì)算機(jī)視覺(jué))、json(閱讀 json 文件)、SciPy(科學(xué)計(jì)算)、sqlite3(數(shù)據(jù)庫(kù))。
我每天使用的工具是帶有 IdeaVim 插件的 PyCharm(這是一個(gè) IDE)。我開(kāi)始用這個(gè)工具是因?yàn)樗且粋€(gè)很強(qiáng)大的調(diào)試器,比默認(rèn)的 Python 調(diào)試器 pdb 更加友好。我還使用了 pip 來(lái)安裝需要的庫(kù)。除非必要,我一般都不再監(jiān)控內(nèi)存使用了。
如果你是一個(gè) C++開(kāi)發(fā)者,并且考慮開(kāi)始寫(xiě) Python,以下是我的一些建議:
改掉老習(xí)慣:別再使用 C++編譯器作為調(diào)試器。不用再過(guò)度優(yōu)化內(nèi)存使用。避免寫(xiě)出 C++風(fēng)格的代碼。并且無(wú)論如何,不要再依賴(lài)類(lèi)型。
養(yǎng)成新習(xí)慣:開(kāi)始使用庫(kù)。寫(xiě) Python 式的代碼(但不要為了寫(xiě)而寫(xiě)),保證代碼的可讀性。嘗試使用一些更加復(fù)雜的概念,如 generators、decorators、contexts。嘗試 PyCharm。
使用 C++和 Python 共用庫(kù):一些 C++庫(kù)(如 OpenCV、QT)有 Python 接口。在 Python 中使用相同的庫(kù)會(huì)比從零開(kāi)始學(xué)習(xí)一個(gè)新庫(kù)更加容易。
勿忘初心:有時(shí)候 Python 實(shí)在是太慢或者不適合你的任務(wù),C++經(jīng)驗(yàn)就派上用場(chǎng)了。有很多方式(SIP、ctypes 等)可以讓你在 Python 內(nèi)使用 C++代碼。
到此,相信大家對(duì)“C++轉(zhuǎn)Python的技巧有哪些”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢(xún),關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。