首先,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#則支援介面和抽象方法。