初學(xué)python,感受和C的部分不同
來(lái)源:
奇酷教育 發(fā)表於:
在學(xué)習(xí)的過(guò)程中,在翻閱資料的過(guò)程中,總結(jié)的一些C和python比較明顯的不同之處,有大方向的,也有細(xì)節(jié)的。
從開(kāi)始學(xué)Python到現(xiàn)在也有三周多了,前後學(xué)習(xí)了Python核心編程。
下面就是在學(xué)習(xí)的過(guò)程中,在翻閱資料的過(guò)程中,總結(jié)的一些C和python比較明顯的不同之處,有大方向的,也有細(xì)節(jié)的,肯定也沒有總結(jié)完。
實(shí)際上,作為兩(liǎng)種完全不同的語言,下面這些差異只是冰山一角而已。權(quán)當(dāng)拋磚引玉吧,至少應(yīng)該對(duì)和我有相同研究興趣,正在考慮是否學(xué)習(xí)另一門(mén)語言的朋友有點(diǎn)幫助。
我之前的研究方向是嵌入式,顯然,C語言是我的主要語言。我不是一個(gè)語言愛(ài)好者,我以前覺得,對(duì)於做研究而不是應(yīng)用的人來(lái)說(shuō),了解多門(mén)語言,不如精通一門(mén)語言。之所以去學(xué)python,主要還是因為python更有利於快速開(kāi)發(fā)一些程序,也是因為現(xiàn)在認(rèn)識到,研究和應(yīng)用是不能分離的。
很多人覺得,既然懂C了,那麼進(jìn)一步掌握C++應(yīng)該是水到渠成,但C++不是C的超集,而我又不喜歡C++的繁瑣和巨大,所以才決定看一看Python。我很喜歡Python的優(yōu)雅與快捷。
弱類(lèi)型語言
一種類(lèi)型可以被忽略的語言,與強(qiáng)類(lèi)型相反。python是弱類(lèi)型的。在python中,您可以將字符串 ‘12′ 和整數(shù) 3 進(jìn)行連接得到字符串’123′,然後可以把它看成整數(shù) 123 。
強(qiáng)類(lèi)型語言
一種總是強(qiáng)制類(lèi)型定義的語言。Java 和 Python 是強(qiáng)制類(lèi)型定義的。您有一個(gè)整數(shù),如果不明確地進(jìn)行轉(zhuǎn)換(huàn) ,不能將把它當(dāng)成一個(gè)字符串。
具體怎麼來(lái)理解這個(gè)“動(dòng)態(tài)確定變量類(lèi)型”,就要從Python的Object對(duì)象機(jī)制說(shuō)起了。Objects(以下稱(chēng)對(duì)象)是Python對(duì)於數(shù)據(jù)的抽象,Python中所有的數(shù)據(jù),都是由對(duì)象或者對(duì)象之間的關(guān)係表示的,函數(shù)是對(duì)象,字符串是對(duì)象,每個(gè)東西都是對(duì)象的概念。
這個(gè)object機(jī)制,就是c所不具備的,主要體現(xiàn)在下面幾點(diǎn):
、剛才說(shuō)了,c是一個(gè)靜態(tài)類(lèi)型語言,我們可以定義int a, char b等等,但必須是在原始碼裡面事先規(guī)定。比如我們可以在Python裡面任意一處直接規(guī)定a = “lk”,這樣,a的類(lèi)型就是string,這是在其賦值的時(shí)候才決定的,我們無(wú)須在代碼中明確寫(xiě)出。而在C裡面,我們必須顯式規(guī)定char *a = “lk”,也就是人工事先規(guī)定好a的類(lèi)型。
、由於在C中,沒有對(duì)象這個(gè)概念,只有“數(shù)據(jù)的表示”,比如說(shuō),如果有兩(liǎng)個(gè)int變量a和b,我們想比較大小,可以用a == b來(lái)判斷,但是如果是兩(liǎng)個(gè)字符串變量a和b,我們就不得不用strcmp來(lái)比較了,因為此時(shí),a和b本質(zhì)上是指向字符串的指針,如果直接還是用==比較,那比較的實(shí)際是指針中存儲(chǔ)的值——地址。
這就是我的部分體會(huì)