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