Python的實用場景有哪些


Python作為一種編程語言,是許多領域的首選語言,其火爆程度自不必說。那這么受歡迎的Python到底可以用來做什么呢?

不負責任地說,Python 可以做任何事情:自動化運維、Web 程序開發、桌面程序開發、科學計算、圖像處理,甚至可以助你脫單(有程序員小哥用Python制作送給女票的生日禮物)。

 

Python能做的事情太多了,我們來好好的捋一捋

 

一、Python適用於哪些應用場景?

 

這個沒有固定答案,很多人都說Python不適合開發GUI的程序,但Python自己的IDE——IDEL和第三方的IDE——Eric就是Python寫的。

也有一個情況用的比較多,用Python當膠水,與各種語言結合,共同完成某軟件功能,注意觀察也許你會發現在安裝一些軟件的時候會有Python的身影。

另外大數據分析Python也是比較適合的,從載入到分析,再到保存結果等,Python有一整套的模塊應對。

 

二、Python能夠勝任大數據嗎?

 

Python很適合做大數據相關的分析,內置的C編譯的模塊能應對常見的操作,個別極端的算法建議用C重寫相關模塊。

Python本身的特點更多的是高效率的開發和簡單的維護,速度交給C,更多的問題其實出自寫代碼的人沒有更好的使用,而不是效率不夠高。比如排序,本來Python有非常高效的內置C編譯的模塊,卻非要自己寫算法,這樣的結果不慢都是奇怪的。

另外還要看需求是CPU密集型,還是IO密集型,如果是CPU密集型建議這部分操作由C實現,IO密集型的效率不會因為Python而有多少改變。

C的效率是高,但框架搭起來也費勁,所以還是結合着來吧。

 

三、Python是否可以完全代替Shell?

 

完全可以,Shell的功能Python均可實現,而且代碼量更少、結構更優、可閱讀性更好,而Python可實現的功能Shell卻不一定能,如運維中會用到的用於網絡通信的Socket模塊、用於WEB的Django框架、用於性能采集的psutil模塊等,而且Shell對操作系統的命令依賴性較強,Python可在更大程度上規避。

再說下Python的效率問題,Python支持多進程、多線程以及協程(比線程更小一級),程序並發度是在Shell之上的。Python的核心模塊基本都是用C實現的,因此效率更高。如有必要也可能將需要用Python實現的Python模塊用C重寫以提高效率,當然也可以直接用C Python,一個直接完全用C實現的Python解釋器。

 

四、Python是否可以訪問常見的數據庫?

 

可以,Python可以訪問常見的各種數據庫,如Oracle、MySQL、Vertica、SQLServer等,加載相應的模塊即可,模塊列表如下:

  • Oracle:cx_Oracle

  • MySQL:MySQLdb

 

五、Python開發是面向過程、函數還是對象?

 

Python雖然是解釋型語言,但從設計之初就已經是一門面向對象的語言,對於Python來說一切皆為對象。正因為如此,在Python中創建一個類和對象是很容易的,當然如果習慣面向過程或者函數的寫法也是可以的,Python並不做硬性的限制。

Python的面向對象特征如下:

 

1.封裝

面向對象程序設計中的術語對象(Object)基本上可以看做數據(特性)以及由一系列可以存取、操作這些數據的方法所組成的集合。傳統意義上的“程序= 數據結構+算法”被封裝”掩蓋“並簡化為“程序=對象+消息”。對象是類的實例,類的抽象則需要經過封裝。封裝可以讓調用者不用關心對象是如何構建的而直接進行使用。

 

2.繼承

類繼承:

繼承給人的直接感覺是這是一種復用代碼的行為。繼承可以理解為它是以普通的類為基礎建立專門的類對象,子類和它繼承的父類是IS-A的關系。

 

多重繼承:

不同於C#,Python是支持多重類繼承的(C#可繼承自多個Interface,但最多繼承自一個類)。多重繼承機制有時很好用,但是它容易讓事情變得復雜。

 

3.多態

多態意味着可以對不同的對象使用同樣的操作,但它們可能會以多種形態呈現出結果。在Python中,任何不知道對象到底是什么類型,但又需要對象做點什么的時候,都會用到多態。方法是多態的,運算符也是多態的。

 

六、如何快速掌握Python?

 

閱讀官方文檔即可滿足日常需求,官方文檔有中文翻譯(http://www.pythondoc.com/),更加方便學習。

但這些都是基礎的語法和常見的模塊,Python學習重要的是模塊,快速、高效的開發依賴的是模塊的應用,站在前人的肩膀會省時省力的多。

但學習Python其實最重要的是學習模塊,而非語法本身,Python的語法十分簡單,只要大學學過C或者數據結構課程,甚至完全沒學過的人也是可以輕松掌握的。掌握了語法已經可以實現Shell的功能,但要想提高模塊的學習必不可少,如運維人員經常用的有:

  • psutil:獲取性能信息

  • socket:基本網絡通信

  • IPy:IP地址相關處理

  • dnsptyhon:域名相關處理

  • difflib:文件比較

  • pexpect:屏幕信息獲取,常用於自動化

  • paramiko:SSH客戶端

  • XlsxWriter:Excel相關處理

 

七、Python是否有專用的IDE工具?

 

有,IDEL用Python實現的Python的IDE工具。

PyCharm:

PyCharm是JetBrains開發的Python IDE。PyCharm用於一般IDE具備的功能,比如,調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制……另外,PyCharm還提供了一些很好的功能用於Django開發,同時支持Google App Engine,更酷的是,PyCharm支持IronPython!

 

Wing IDE:

Wingware的Python IDE兼容Python 2.x和3.x,可以結合Django,matplotlib,Zope, Plone,App Engine,PyQt,PySide,wxPython,PyGTK,Tkinter,mod_wsgi,pygame,Maya,MotionBuilder,NUKE,Blender和其他Python框架使用。

其他的還有:Eclipse withPyDev、Sublime Text、Komodo Edit、PyScripter、The Eric Python IDE、Interactive Editor for Python

 

八、運用Python實現系統自動化監控有哪些常用方法?

 

准確的說應該是有哪些模塊,監控肯定要有psutil來監控性能,還會用到通信的Socket,登陸的Paramiko、telnetlib,ftp的ftplib。

原理基本就是采集數據——本地處理數據——傳輸數據,如果做的比較完善可以再做個呈現數據,也可以把數據發送給Zabbix等開源工具。

 

九、Python可運行在哪些平台?跨平台性如何?

 

支持常見的主流平台,如AIX、HPUX、Solaris、Linux、Windows等,除Windows外常見的Unix、Linux平台均帶有原生的Python,但版本一般較低。

關於跨平台和他跨平台語言一樣,要注意有些個別模塊是單一平台特有的,整體的跨平台性還是很好的,不必為適應多平台寫多套代碼。

 

十、Python運行速度如何? 

 

通常Java的速度比Python快些。Python調用C擴展除外(也可以直接用CPython)。

對於Python速度太慢的批評,Python語言作者Guido van Rossum說:

如果你開發的系統發現了性能瓶頸,通常最有效率的做法是找到出問題的代碼塊,用速度較快的語言如C或C++寫一些代碼替換該功能或該模塊,而不是用C或C++重寫整個系統,因為對大部分代碼而言,語言的速度是無關緊要的。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM