1、PYTHON擅長的領域python
WEB開發算法
Django\pyramid\Tornado\Bottle\Flask\WebPy 數據庫
網絡編程編程
Twisted\Requests\Scrapy\Paramiko設計模式
科學運算緩存
SciPY\Pandas\Ipython安全
GUI圖形開發服務器
wxPython\PyQT\Kivy網絡
運維自動化多線程
OpenStack\SaltStack\Ansible\騰訊藍鯨
2、運維會了開發後能夠幹什麼?
- 幫助公司開發各類自動化工具,定製開發各類開源軟件;
- 幫助評估和優化業務技術架構;
- 開發公司的內部辦公系統、CRM、網站等;
- 作個全棧工程師,全棧就是指什麼都能作的樣子。
3、課程介紹
療程1:語言基礎(5-6周)
- 數據類型;
- 流程控制;
- 經常使用模塊;
- 函數、迭代器、裝飾器;
- 遞歸、迭代、反射;
- 面向對象編程;
- 購物車程序;
- ATM信用卡程序開發;
- 計算器程序開發;
- 模擬人生遊戲開發。
療程2:網絡編程(4-5周)
- Socket c/s編程、Twisted異步網絡框架、網絡爬蟲開發
- 多線程、多進程、協程gevent、select\poll\epoll
- 生產者消費者模型
- 審計堡壘機系統開發
- FTP服務器開發
- 批量命令、文件分佈工具
- RabbitMQ消息隊列、SqlAlchemy ORM
- 類SaltStack配置管理工具開發
- Reids\MemCache\MongoDB緩存數據庫
療程3:Web基礎開發(3-4周)
- Html/CSS基礎
- Dom編程
- 原生JS學習
- Jquery/EasyUi/AngulaJS
- Ajax異步加載
- Highchart畫圖
- Bootstrap
療程4:算法&設計模式(1周)
- 冒泡、二叉樹、哈希、拆半等常見算法學習
- 工廠模式、單例模式、享元模式、代理模式等經常使用設計模式學習
療程5:PY WEB框架(5周)
- MVC框架講解
- 自行開發一個WEB框架
- Django\Tornado\Flask\Bottle\WebPy框架學習
- Session\中間件\ORM\Cookie\CSRF\FROM......
- Restful API框架
- 權限管理後臺開發
- 開發BBS論壇
- 開發WEB聊天室
療程6:項目實戰篇(6周)
- 購物商場開發
- 主機管理+任務編排+運維審計堡壘機開發
- 分佈式Nagion/Zabbix監控產品開發
- CMDB資產管理開發
- 基於用戶視角的網站訪問質量監測分析平臺開發
- Docker自動化管理平臺開發
- OpenStack二次開發
4、python是一門怎樣的語言?
編程語言主要從如下幾個角度爲進行分類,編譯型和解釋型、靜態語言和動態語言、強類型定義語言和弱類型定義語言,每一個分類表明什麼意思呢,咱們一塊兒來看一下。
一、編譯與解釋
編譯是將源程序翻譯成可執行的目標代碼,翻譯與執行是分開的;而解釋是對源程序的翻譯與執行一次性完成,不生成可存儲的目標代碼。這只是表象,兩者背後的最大區別是:對解釋執行而言,程序運行時的控制權在解釋器而不在用戶程序;對編譯執行而言,運行時的控制權在用戶程序。
解釋具備良好的動態特性和可移植性,好比在解釋執行時能夠動態改變變量的類型、對程序進行修改以及在程序中插入良好的調試診斷信息等,而將解釋器移植到不一樣的系統上,則程序不用改動就能夠在移植瞭解釋器的系統上運行。同時解釋器也有很大的缺點,好比執行效率低,佔用空間大,由於不只要給用戶程序分配空間,解釋器自己也佔用了寶貴的系統資源。
編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快;
而解釋器則是隻在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此運行速度是不如編譯後的程序運行的快的.
二、動態語言和靜態語言
一般咱們所說的動態語言、靜態語言是指動態類型語言和靜態類型語言。
(1)動態類型語言:動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在用動態類型的語言編程時,永遠也不用給任何變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。Python和Ruby就是一種典型的動態類型語言,其餘的各類腳本語言如VBScript也多少屬於動態類型語言。
(2)靜態類型語言:靜態類型語言與動態類型語言恰好相反,它的數據類型是在編譯其間檢查的,也就是說在寫程序時要聲明全部變量的數據類型,C/C++是靜態類型語言的典型表明,其餘的靜態類型語言還有C#、JAVA等。
三、強類型定義語言和弱類型定義語言
(1)強類型定義語言:強制數據類型定義的語言。也就是說,一旦一個變量被指定了某個數據類型,若是不通過強制轉換,那麼它就永遠是這個數據類型了。舉個例子:若是你定義了一個整型變量a,那麼程序根本不可能將a看成字符串類型處理。強類型定義語言是類型安全的語言。
(2)弱類型定義語言:數據類型能夠被忽略的語言。它與強類型定義語言相反, 一個變量能夠賦不一樣數據類型的值。
強類型定義語言在速度上可能略遜色於弱類型定義語言,可是強類型定義語言帶來的嚴謹性可以有效的避免許多錯誤。另外,「這門語言是否是動態語言」與「這門語言是否類型安全」之間是徹底沒有聯繫的!
例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。
經過上面這些介紹,咱們能夠得出,python是一門動態解釋性的強類型定義語言。
5、python的優缺點
先看優勢
- Python的定位是「優雅」、「明確」、「簡單」,因此Python程序看上去老是簡單易懂,初學者學Python,不但入門容易,並且未來深刻下去,能夠編寫那些很是很是複雜的程序。
- 開發效率很是高,Python有很是強大的第三方庫,基本上你想經過計算機實現任何功能,Python官方庫裏都有相應的模塊進行支持,直接下載調用後,在基礎庫的基礎上再進行開發,大大下降開發週期,避免重複造輪子。
- 高級語言————當你用Python語言編寫程序的時候,你無需考慮諸如如何管理你的程序使用的內存一類的底層細節
- 可移植性————因爲它的開源本質,Python已經被移植在許多平臺上(通過改動使它可以工 做在不一樣平臺上)。若是你當心地避免使用依賴於系統的特性,那麼你的全部Python程序無需修改就幾乎能夠在市場上全部的系統平臺上運行
- 可擴展性————若是你須要你的一段關鍵代碼運行得更快或者但願某些算法不公開,你能夠把你的部分程序用C或C++編寫,而後在你的Python程序中使用它們。
- 可嵌入性————你能夠把Python嵌入你的C/C++程序,從而向你的程序用戶提供腳本功能。
再看缺點:
- 速度慢,Python 的運行速度相比C語言確實慢不少,跟JAVA相比也要慢一些,所以這也是不少所謂的大牛不屑於使用Python的主要緣由,但其實這裏所指的運行速度慢在大多數狀況下用戶是沒法直接感知到的,必須藉助測試工具才能體現出來,好比你用C運一個程序花了0.1s,用Python是0.01s,這樣C語言直接比Python快了10s,算是很是誇張了,可是你是沒法直接經過肉眼感知的,由於一個正常人所能感知的時間最小單位是0.15-0.4s左右,哈哈。其實在大多數狀況下Python已經徹底能夠知足你對程序速度的要求,除非你要寫對速度要求極高的搜索引擎等,這種狀況下,固然仍是建議你用C去實現的。
- 代碼不能加密,由於PYTHON是解釋性語言,它的源碼都是以名文形式存放的,不過我不認爲這算是一個缺點,若是你的項目要求源代碼必須是加密的,那你一開始就不該該用Python來去實現。
- 線程不能利用多CPU問題,這是Python被人詬病最多的一個缺點,GIL即全局解釋器鎖(Global Interpreter Lock),是計算機程序設計語言解釋器用於同步線程的工具,使得任什麼時候刻僅有一個線程在執行,Python的線程是操做系統的原生線程。在Linux上爲pthread,在Windows上爲Win thread,徹底由操做系統調度線程的執行。一個python解釋器進程內有一條主線程,以及多條用戶程序的執行線程。即便在多核CPU平臺上,因爲GIL的存在,因此禁止多線程的並行執行。關於這個問題的折衷解決方法,咱們在之後線程和進程章節裏再進行詳細探討。
固然,Python還有一些其它的小缺點,在這就不一一列舉了,我想說的是,任何一門語言都不是完美的,都有擅長和不擅長作的事情,建議各位不要拿一個語言的劣勢去跟另外一個語言的優點來去比較,語言只是一個工具,是實現程序設計師思想的工具,就像咱們以前中學學幾什麼時候,有的時候須要要圓規,有的時候須要用三角尺同樣,拿相應的工具去作它最擅長的事纔是正確的選擇。