初學Python必須知道的11個知識點!
Python被譽為全世界高效的程式語言,同時也被稱作是“膠水語言”,那它為何能如此受歡迎?下面小千就來說說學習Python 必須知道的11個知識點,也就是它為何能夠如此受歡迎的原因。
1、Python適用於哪些應用場景?
這個沒有固定答案,很多人都說Python不適合開發GUI的程式,但Python自己的IDE——IDEL和第三方的IDE——Eric就是Python寫的。目前看到的更多的人是拿來寫Web,使用如Django、web.py框架,沒記錯Flask也是。
也有一個情況用的比較多,用Python當膠水,與各種語言結合,共同完成某軟體功能,注意觀察也許你會發現在安裝一些軟體的時候會有Python的身影。
我個人還拿Python模擬過埠轉發和DNS服務等,所以真的是要看真麼用,而不是能怎麼用。
另外大資料分析Python也是比較適合的,從載入到分析,再到儲存結果等,Python有一整套的模組應對。
2、Python能夠勝任大資料嗎?
Python很適合做大資料相關的分析,內建的C編譯的模組能應對常見的操作,個別極端的演算法建議用C重寫相關模組。
Python本身的特點更多的是高效率的開發和簡單的維護,速度交給C去吧,更多的問題其實出自寫程式碼的人沒有更好的使用,而不是效率不夠高。比如排序,本來Python有非常高效的內建C編譯的模組,卻非要自己寫演算法,這樣的結果不慢都是奇怪的。
另外還要看需求是CPU密集型,還是IO密集型,如果是CPU密集型建議這部分操作由C實現,IO密集型的效率不會因為Python而有多少改變。
C的效率是高,但框架搭起來也費勁,所以還是結合著來吧,也因此,Python被稱為膠水語言。
3、Python是否可以完全代替Shell?
完全可以,Shell的功能Python均可實現,而且程式碼量更少、結構更優、可閱讀性更好,而Python可實現的功能Shell卻不一定能,如運維中會用到的用於網路通訊的Socket模組、用於WEB的Django框架、用於效能採集的psutil模組等,而且Shell對作業系統的命令依賴性較強,Python可在更大程度上規避。
在一個Shell的IDE是個很大的問題,雖然Python的原生IDE不怎麼樣,但第三方的IDE還是功能十分強大的。雖然不能和微軟的Virtual Studio相媲美,但也是能完全滿足Python的開發需求的。
再說下Python的效率問題,Python支援多程式、多執行緒以及協程(比執行緒更小一級),程式併發度是在Shell之上的。Python的核心模組基本都是用C實現的,因此效率更高。如有必要也可能將需要用Python實現的Python模組用C重寫以提高效率,當然也可以直接用C Python,一個直接完全用C實現的Python直譯器。
4、Python是否可以訪問常見的資料庫?
可以,Python可以訪問常見的各種資料庫,如Oracle、MySQL、Vertica、SQLServer等,載入相應的模組即可,模組列表如下:
Oracle:cx_Oracle
MySQL:MySQLdb
5、Python開發是程式導向、函式還是物件?
Python雖然是解釋型語言,但從設計之初就已經是一門物件導向的語言,對於Python來說一切皆為物件。正因為如此,在Python中建立一個類和物件是很容易的,當然如果習慣程式導向或者函式的寫法也是可以的,Python並不做硬性的限制。
Python的物件導向特徵如下:
封裝
物件導向程式設計中的術語物件(Object)基本上可以看做資料(特性)以及由一系列可以存取、操作這些資料的方法所組成的集合。傳統意義上的“程式= 資料結構+演算法”被封裝”掩蓋“並簡化為“程式=物件+訊息”。物件是類的例項,類的抽象則需要經過封裝。封裝可以讓呼叫者不用關心物件是如何構建的而直接進行使用。
繼承
類繼承:
繼承給人的直接感覺是這是一種複用程式碼的行為。繼承可以理解為它是以普通的類為基礎建立專門的類物件,子類和它繼承的父類是IS-A的關係。
多重繼承:
不同於C#,Python是支援多重類繼承的(C#可繼承自多個Interface,但最多繼承自一個類)。多重繼承機制有時很好用,但是它容易讓事情變得複雜。
多型
多型意味著可以對不同的物件使用同樣的操作,但它們可能會以多種形態呈現出結果。在Python中,任何不知道物件到底是什麼型別,但又需要物件做點什麼的時候,都會用到多型。方法是多型的,運算子也是多型的。
6、如何快速掌握Python?
閱讀官方文件即可滿足日常需求,官方文件有中文翻譯,更加方便學習。但這些都是基礎的語法和常見的模組,Python學習重要的是模組,快速、高效的開發依賴的是模組的應用,站在前人的肩膀會省時省力的多。
但學習Python其實最重要的是學習模組,而非語法本身,Python的語法十分簡單,只要大學學過C或者資料結構課程,甚至完全沒學過的人也是可以輕鬆掌握的。掌握了語法已經可以實現Shell的功能,但要想提高模組的學習必不可少,如運維人員經常用的有:
psutil:獲取效能資訊
socket:基本網路通訊
IPy:IP地址相關處理
dnsptyhon:域名相關處理
difflib:檔案比較
pexpect:螢幕資訊獲取,常用於自動化
paramiko:SSH客戶端
XlsxWriter:Excel相關處理
其他還有很多很多功能模組,每天也不斷的有新的模組、框架、元件產生,如用於與Java 做橋接的PythonJS,甚至Python還可以編寫Map和Reduce。
7、Python是否有專用的IDE工具?
有,IDEL用Python實現的Python的IDE工具,但說實話,功能真心不咋地。我個人常用的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框架使用。Wing支援測試驅動開發,整合了單元測試,nose和Django框架的執行和除錯功能。Wing IDE啟動和執行的速度都非常快,支援Windows,Linux,OS X和Python versi。
NotePad++
簡單、方便,但僅適合臨時性的更改。
其他的還有:Eclipse withPyDev、Sublime Text、Komodo Edit、Pyer、The Eric Python IDE、Interactive Editor for Python
8、運用Python實現系統自動化監控有哪些常用方法?
準確的說應該是有哪些模組,健康監控肯定要有psutil來監控效能,還會用到通訊的Socket,登陸的Paramiko、telnetlib,ftp的ftplib。
原理基本就是採集資料——本地處理資料——傳輸資料,如果做的比較完善可以再做個呈現資料,也可以吧資料傳送給Zabbix等開源工具。
個人還用一個開源監控網路刺探的,超過指定次數就自動封殺。
9、Python可執行在那些平臺?跨平臺性如何?
支援常見的主流平臺,如AIX、HPUX、Solaris、Linux、Windows等,除Windows外常見的Unix、Linux平臺均帶有原生的Python,但版本一般較低。關於跨平臺和他跨平臺語言一樣,要注意有些個別模組是單一平臺特有的,整體的跨平臺性還是很好的,不必為適應多平臺寫多套程式碼。
但這不是說一點限制都沒有:首先,同一個版本的中間檔案.py和.pyc以及.pyo是跨平臺的;其次,PC與移動終端,如:手機、Pad不可跨平臺(原因見下一條);最後,不能跨處理器構架,如:Intel與ARM,64位與32位。
10、如何利用Python提高開發效率?
因為Python很多底層的東西不用自己寫,模組資源豐富,運用得當開發效率當然會提升,而且各種框架也為快速開發提供了基礎。
11、Python執行速度如何?
通常Java的速度比Python快些。Python呼叫C擴充套件除外(也可以直接用CPython)。
對於Python速度太慢的批評,Python語言作者Guido van Rossum說:
如果你開發的系統發現了效能瓶頸,通常最有效率的做法是找到出問題的程式碼塊,用速度較快的語言如C或C++寫一些程式碼替換該功能或該模組,而不是用C或C++重寫整個系統,因為對大部分程式碼而言,語言的速度是無關緊要的。
人工智慧時代已經到來,學習Python更是一個發展自己的好機會,歡迎大家抓緊時間來學習喲。可以關注小千,後期會分享更多Python知識!
本文來自千鋒教育,轉載請註明出處。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31548651/viewspace-2838472/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Python入門必須知道的11個知識點Python
- 初識python必知的6個知識點Python
- 關於Flutter 您必須知道的知識點!!!Flutter
- 初識python你應該知道的6個知識點!Python
- 大學期間必須知道的JVM知識JVM
- 關於Mysql事務,你必須知道的幾個知識點!MySql
- 程式猿必須知道的關於 Tomcat 的知識點Tomcat
- 學習 Laravel 必須理解的知識點Laravel
- 關於索引必須知道的知識索引
- 關於JVM,你必須知道的這些知識點JVM
- Java培訓零基礎學員必須要知道的知識點Java
- 前端必須掌握的知識點前端
- 軟體工程師必須知道20個知識點你瞭解多少?軟體工程工程師
- 你必須知道的Java基礎知識Java
- JavaScript大師必須掌握的12個知識點JavaScript
- 高階 Java 必須突破的 10 個知識點!Java
- 高階Java必須突破的10個知識點!Java
- Python初學者的29個知識難點彙總Python
- Python爬蟲需要學哪些東西?這些知識點必須掌握!Python爬蟲
- 資料分析師必須知道的知識:資料倉儲的特點
- 5G大規模商用來臨之前,你必須知道的幾個知識點
- Linux新手入門必須要掌握的10個知識點!Linux
- 學習Kali Linux必須知道的幾點Linux
- Android 之 Notification 必須掌握知識點Android
- 關於 Laravel 資料庫查詢鎖必須要知道的知識點Laravel資料庫
- 零基礎如何學好Python?Python有哪些必須學的知識?Python
- 千萬淘寶店運營必備知識,你必須知道!
- Java入門知識_Java初學者須知Java
- 這幾個python常用的庫你必須知道!Python
- 必須懂的mysql知識MySql
- 學習爬蟲必須學的基礎知識爬蟲
- Git的11個知識點Git
- JVM-Java工程師必須掌握的知識點JVMJava工程師
- Python 這10個字典操作你必須知道Python
- JS高階之面試必須知道的幾個點JS面試
- 初學Java該學哪些知識?這6大知識必學Java
- 關於資料庫索引,必須掌握的知識點資料庫索引
- 檔案管理,你必須要知道的三個要點