python和C#的區別

來源:互聯網
上載者:User

首先,Python與JAVA一樣,是一門開源的、跨多平台的語言。而C#本身不是開源的,且只能運行在Windows平台上。

1. 編譯性

Python是一門解釋性指令碼語言,原始碼不需要編譯可以直接運行,運行時Python位元組碼解譯器解釋原始碼並執行相關命令。Python的原始碼檔案.py可以直接運行,如果裝了Python在本地的話。而C#則需要編譯為IL,運行時由CLR託管運行。

2. 資料類型

Python的資料類型比較少,基本數字類型只有5種,序列類型三種:字串,元組,列表。映射類型一種:字典。C#的內建資料類型則有很多。Python沒有double類型。Python沒有char或byte類型來儲存單一字元或8位整型。Python有個內建的複數數字類型,C#沒有。

3. 物件導向

Python中代碼(欄位,函數)可以不放在類中,而是直接放在.py檔案下,C#不允許這麼做。

4. 代碼塊

Python縮排,C#是大括弧。

5. Switch

Python沒有

6. for/foreach

Python沒有foreach,Python的for迴圈類似於C#的foreach。要實現C#的for迴圈功能,Python要藉助於range()函數。

7. 列表解析/切片操作

C#沒有這個功能。

8. 自增/自減運算

Python不支援

9. 變數聲明

Python無需顯式的聲明變數,在賦值時自動聲明。Python也不需要變數型別宣告,因為是動態類型,解譯器判斷類型。C#需要先聲明,並指定類型,再賦值。

10. 內建函數

Python的有些內建函數,可以無需通過類而直接調用。

11. 字串

Python的字串符號有3種: '   "    ''', 比較靈活,C#只有“。

12. 錯誤和異常

Python中try語句中有個else子句,C#沒有。

13. 函數

Python的函數傳回值相當靈活,可以根據判斷條件返回不一樣的資料類型,也可以以返回一個元組的形式返回多個資料類型。Python的函數沒有定義傳回值類型。

Python的函數可以作為參數傳入函數,而C#實作類別似的功能需要借委託來實現。

你可以在任何時候給Python的函數添加屬性。

14. 內嵌函數

Python的函數體內仍然可以定義一個函數,稱為內部/內嵌函數。

15. 函數的可變參數

Python的可變參數非常靈活,可以有非關鍵字可變長參數和關鍵字變數參數(字典)兩種。C#只支援非關鍵字可變長參數,而且C#的可變參數都必須為同一類型。

16. 模組和檔案

Python中一個檔案被看作是一個獨立模組,一個模組也可以被看作是一個檔案。模組的檔案名稱就是模組的名字加上副檔名.py。與其他可以匯入類的語言不同,在Python中你匯入的是模組或模組屬性。C#中與模組功能類似的是名稱空間,一個名稱空間可以存在於多個檔案甚至dll中,在匯入名稱空間後,其名稱空間下的類可以直接使用。

17. 載入引用機制

因為Python代碼是不編譯的,因此其更適合通過設定搜尋路徑的方式訪問其他的Python代碼。而C#是通過添加引用的方式訪問其他程式集中的代碼。

18. 繼承機制

Python支援多繼承,體現了物件導向的合成的特性。C#不支援多繼承。

19. 抽象性

Python不支援純虛函數,也沒有抽象方法。而C#則支援介面和抽象方法。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.