對于Python 腳本優點介紹
下文介紹Python 腳本的文章,類似的,各種語言之間都互有差異,語言只是工具,要根據任務的不同選擇不同的工具,做專家系統就用Prolog,要跟操作系統底層交互就用C,跨平臺就用Java或Python。
一般來說腳本語言的學習相比系統編程語言而言要更容易些,因為系統語言(如C/C++/Java)功能更加強大,語言復雜性高,學習周期長;從某種意義上說,腳本語言一句指令可以做更多事。
更加人性化,體現了機器為人服務的宗旨。因為一個程序如果人做的少了,機器就相應做的多了,正好符合自動化的思想,發明機器就是為了要減輕人的勞動。腳本語言從這個角度來說是值得大力推崇的。
但是沒有什么是***的,讓機器做的太多的代價很有可能就是不如讓機器做的少運行效率高。比如Python運行時要做動態的類型檢查,要耗費機器運行時間,在C等靜態編譯的語言中這個工作是留給人做了,還有一些類似的因素,因此C的效率比Python 腳本高很多。
垃圾回收(garbage collection,一下簡稱GC)在當前的版本中使用的是引用計數垃圾收集和可選的循環結構垃圾空間掃描技術,一旦對象變得‘不可達’的時候就會被回收,但是不保證能夠回收包含循環引用計數的內存垃圾。引用計數的算法比較直觀:在每個存儲片中記錄了指向其的指針數目;在對存儲片進行某些操作時,對引用計數進行更新。
分配一個存儲片時引用計數初始化為1,只要存儲片的引用被復制,引用計數加1,存儲片的引用被刪除時,引用計數減1,如果引用計數減為0,則存儲片會由于不可達而被回收。
很明顯引用計數算法不能回收循環的數據結構;設想一個簡單的場景:對象a一個成員指向對象b,同時b也有一個成員指向a。而且代碼中只有引用a的部分,b對象只是輔助a對象而生成的,如果后來a對象被刪除了,那么a和b作為一個整體都變成內存垃圾了。
理論上應該都被內存管理器刪除,但是由于引用計數算法每次只考察一個結點,因此對于循環的數據結構無法回收。所以在編程時應盡量避免循環引用的情況出現。 Python語言的執行效率跟C/C++/Java比起來要稍遜一籌,但是代碼長度大大縮短,并且Python跨平臺、類庫豐富、語法簡單、開發速度快。
因此常用Python代替C/Java構建大程序,涉及到系統效率的地方可以考慮用C/C++實現。而且Python也可以做glue language(膠水語言),因為Python跟C和Java的溝通能力非常的好。
.NET平臺上實現的Python;確切的說Python for .NET是一種編譯器和運行時;它將 Python 腳本編譯成外部虛擬機的格式,并使得.NET類庫在Python語言中可用。IronPython .NET 平臺上的Python;相對于傳統的Python,IronPython支持可選的靜態編譯功能,靜態編譯過的IronPython程序就形成了常規的。
. NET可執行文件(.EXE文件)。甚至還可以將IronPython程序靜態編譯為.NET動態鏈接庫(.dll文件)并且供C#和VB.NET等. NET語言調用。Python自身的優秀特性決定了其在實際應用中的廣泛性。快速原型開發;網絡服務器腳本;科學計算;文檔處理;數據庫編程;
嵌入開發;GUI開發;游戲開發;移動開發......Python 腳本擁有強大Python社區的支持,豐富的類庫,以及C/C++/Java等語言提供可擴展模塊。 摩爾定律斷言了處理器、內存或者I/O設備等將不再大幅度影響程序的執行效率,對于相當一部分的應用程序而言,實現同樣的功能。
用系統語言和腳本語言相比,生成代碼的運行效率可能都會在可容忍的范圍內,但是腳本語言代碼量可能會低很多(Python和Java大約是1:6)。開發周期更短,而且現在很多常用的功能都已經用系統語言實現了,可以作為功能模塊,配合腳本語言的glue功能,即可完成系統實現。
【編輯推薦】