python和c#哪个简单-最近学习 Python 的一些感触 (对比 C#)
反駁下Pythoner說的簡單
之前很多人都說Python用起來簡單,我的第一感覺就是胡扯,現在我稍微學了一點,更加堅信了那是胡扯。
當然Python在很小很小的項目里面可能是簡單,例如Python寫一個HelloWorld,其只要一句print "HelloWorld"就行了,而在C#里面,由于語法限制,其需要一個命名空間、一個類、一個Main函數和一句Console.WriteLine("HelloWorld");才能完成一個控制臺輸出HelloWorld的程序,但是倘若我們去完成一個稍微大一點的項目,那就不一定了。
例如我們要完成讀取Excel中一張名為XXX表中的數據,在雙方都不使用第三方框架的情況下,同時C#不使用ADO.NET技術,那么雙方實現讀取Excel的困難程度應該是差不多的,但是如果允許使用第三方類庫(備注:1、使用免費的第三方類庫,因為C#有個收費類庫讀取Excel只需要一兩行代碼就能完成;2、C#不使用ADO.NET技術),那雙方的代碼量應該是差不多的。
因此說Python用起來簡單,那是無稽之談,真正使開發變得簡單的是第三方類庫,而對于Python、C#(除了.Net Core外)來說,其第三方類庫都是充足的,因此其開發應該都是差不多的。
Python與C#之間的不同點
1、程序的運行生命周期可以分為編譯時、鏈接時、加載時、運行時,這4個階段。在Python中,這4個階段是一體的,而在C#中卻是嚴格分離的,在C#要想跨階段執行則就需要用到反射。這就造成了兩者之間具有很大的不同。備注:不討論C#中dynamic這樣的動態類型。
例如依賴注入,在靜態語言中依賴注入的價值體現在其通過IoC把對象對接口及實現的依賴反轉為對DI容器的依賴,通過在DI容器中注入,從而獲得對象的實現,即其將對象的索取從編譯時、加載時轉移到了運行時。而對于像Python這樣的動態語言,由于其各個階段是一體的,從而使得其本身的運行環境就好比是一個DI容器。
2、由于1的原因,Python可以實現類型之間的快速切換,而C#卻需要通過相應的類型轉換才能實現。備注:無視C#隱式類型轉換
例如int和long之間的切換
num=2147483647
num=num+1
Python:2147483647是int的上限值,當其+1后,這個num變量會自動轉變為long類型
int num=2147483647;
num=num+1;
而如果C#寫成這樣,其程序在運行到num=num+1;時,便會出錯
int num=2147483647;
long numLong=(long)num+1;
我們只有先將num轉化為long類型,然后+1,并賦值給新的對象,這樣我們才能獲得正確的值2147483648。
3、同樣由于1的原因,Python無法做靜態類型檢查,而C#卻會進行靜態類型檢查。
這使得C#在編譯時就能發現相應的類型錯誤,而Python卻只能在程序運行時才能發現。
對于Python的這一點,其就好像是一把雙刃劍,雖然這免去了類型約束,便于寫代碼,但是這也使得代碼變得更難維護。這也是“動態類型一時爽,代碼重構火葬場”的由來。
4、Python沒有訪問修飾符,而C#有public、private、internal、protected、protected internal等的訪問修飾符。
訪問修飾符可以起到對相關內容訪問的控制作用。但是Python卻沒有,有人說__是私有什么的,那其實是偽私有,換個寫法就又能進行訪問了,因此Python中相關內容的訪問全靠編程者的自覺,同時編程者也必需知道哪些內容可以訪問,哪些內容不可訪問。
5、Python沒有interface,其只能類繼承,同時其還支持多繼承,而C#只能單繼承,一個類只能繼承一個類,當然C#為了彌補單繼承的不足,還帶來了interface,一個類可以繼承多個interface。
有關Python的抽象類多繼承和C#的interface多繼承,這2者之間的區別就不多說了,區別還是比較大的。
Python的多繼承會增加代碼的復雜度,再加上Python沒有訪問修飾符,這也就變相要求了編程者的能力,尤其是當項目越來越大,需求越來越多,業務越來越復雜的時候。
6、Python沒有泛型,或者說不需要泛型,而C#卻有泛型。
對于這一點沒什么好說的,Python不需要泛型的理由就是之前提到的1、2這兩點,即由于其所有變量簽名都是動態的,因此對于Python來說,其不需要泛型。
總結:
1、Python是一門非常靈活的動態語言及動態類型語言。Python為了其靈活性,拋棄了很多東西,因此我認為這靈活性就相當于一把雙刃劍,真正要想掌控好這門語言還是挺難的。
2、除了上面說的不同點外,其實Python和C#之間還有很多其他的不同點,具體的不說了,在這兒我想說的是他們兩者的編程思維也因此發生很大的不同。所以如果你目前只會動態語言,那就去學一門靜態語言看看吧;如果你目前只會靜態語言,那就去學一門動態語言看看吧,只有動靜結合方能大成/滑稽
總結
以上是生活随笔為你收集整理的python和c#哪个简单-最近学习 Python 的一些感触 (对比 C#)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 下元宵怎么下 怎么煮元宵
- 下一篇: eve模拟器_《Re:从零开始的新伊甸征