python與c語言的語法有哪些不一樣的

datehoer發表於2020-11-17

Python是一種跨平臺的計算機程式設計語言。 是一個高層次的結合瞭解釋性、編譯性、互動性和麵向物件的指令碼語言。最初被設計用於編寫自動化指令碼(shell),隨著版本的不斷更新和語言新功能的新增,越多被用於獨立的、大型專案的開發。
C語言是一門程式導向的、抽象化的通用程式設計語言,廣泛應用於底層開發。C語言能以簡易的方式編譯、處理低階儲存器。C語言是僅產生少量的機器語言以及不需要任何執行環境支援便能執行的高效率程式設計語言。儘管C語言提供了許多低階處理的功能,但仍然保持著跨平臺的特性,以一個標準規格寫出的C語言程式可在包括類似嵌入式處理器以及超級計算機等作業平臺的許多計算機平臺上進行編譯。
雖然都是程式語言,但是他們的卻有許多不同之處。
c是編譯語言,Python是解釋語言。這一點其他回答者也提到過,確實是重要的區分。編譯和解釋最大的區別是需要寫一個入口函式,這在C語言中是主要的,Python寫不出來。

編譯型別的優點是“靜態”,程式碼不能逐行編譯執行,必須作為整個專案進行編譯,方便了型別檢查,降低了執行時的錯誤率;執行時效率更高,因為編譯器可以協調各方面,生成更優化的機器指令;一旦編譯完成,就可以用機器語言直接再次執行。

解釋性語言的優點是“動態”,每行程式碼都可以獨立執行(程式碼塊除外)。這樣可以靈活地進行實時互動、執行程式的調整和實時非同步除錯。
Python是動態型別語言,也是強型別語言。當你第一次給變數賦值時,它們決定了變數的型別。c語言是一種靜態型別語言,在編譯時確定資料型別。大多數靜態型別語言通過要求在使用任何變數之前宣告其資料型別來保證這一點。
Python中的所有資料都是用物件或者物件之間的關係來表示的。函式是物件,字串是物件,一切都是物件的概念。每個物件都有三個屬性:實體、型別和值。

c中沒有物件的概念,只有“資料表示”。例如,如果有兩個int變數a和b,如果您想比較它們的大小,可以使用a = = b來判斷它們,但是如果它們是兩個string變數a和b,您必須使用strcmp來比較它們,因為此時,a和b本質上是指向字串的指標。如果您使用= =直接比較它們,比較實際上是指標中儲存的值地址。

Python“動態型別”,我能理解,因為寫的時候不需要宣告型別。但你說是“強打”?這個我不能接受。哪種“強型別”語言可以隨意給變數賦值?前面說過,儲存物件的變數實際上只是記憶體中物件的地址(而“值型別”,比如小整數,一般直接儲存值)。變數儲存在堆疊中,物件放在堆中。書庫一個個疊得整整齊齊,書庫隨機開啟。當我們執行a = [1,2,3]這樣的語句時,Python執行時環境在“堆”中生成一個新的list物件,返回物件的第一個地址,賦給新的變數A,推入棧中。之後,如果執行a = {‘x’: 1},只會將a中的地址改為字典物件。因此,變數可以儲存任何物件,不是因為變數本身可以隨意改變,而是因為指標可以指向任何東西。
另外,真正的弱型別語言 JavaScript 對上述整數加字串、呼叫不存在的方法、整數引數傳浮點數都不會報錯。由此,你可以相信 Python 屬於強型別語言了吧。(補充:更徹底的弱型別語言比如 Lisp,甚至是在機器上實現弱型別的)
Python有六種標準資料型別:數字、字串、列表、元組祖先、集合集和字典字典。數字有四種型別:整數、布林、浮點數和複數。c語言也可以分為四類:基本型、列舉型、void型、派生型。基本型別:整數型和浮點型。
不過,基本的資料結構,計算機組成原理這些,是什麼語言都需要了解的,否則永遠也只是知道一點皮毛。

學C語言難而python簡單,但是先學C語言能更好打基礎。畢竟,要做程式設計師,你不能只會一門語言,大多數程式設計師都需要會至少三門語言的。

本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章