第一章 介紹與循環
第一課 開課介紹
pyhton擅長的領域:
web開發:
Django\pyramid\Tornado\Bottle\Flask\WebPy
網絡編程(爬蟲):
Scrapy\Twisted\Requests\Paramiko
科學運算:
Pandas(金融領域)\SciPy\Ipython
DUI圖形開發:
wxPython\PyQT\Kivy
運維自動化:
OpenStack\騰訊藍鯨
自動化運維必須會開發嗎?
運維要考慮的問題:
1.如何高效的適應業務的頻繁更新、變動、上線、擴展?
2.如何在成本最低的前提下,實現業務併發運算能力的可伸縮式擴展?
3.如何實現運維人員從被動處理故障到故障的預防和故障高度自愈的轉換?
4.如何經過不斷優化運維流程、自動化工具來下降運維成本、人工參與度,最終實現無人運維?
自動化運維會開發能夠幹什麼?
1.幫助公司開發各類自動化工具,定製開發各類開源軟件
2.幫助評估和優化業務技術架構
3.開發公司內部的辦公系統,CRM(財務管理系統),網站等
4.作個全棧工程師,全棧就是指什麼都能作的樣子
課程計劃:
1.語言基礎:
數據類型
流程控制
經常使用模塊
函數、迭代器、裝飾器
遞歸、迭代、反射
面向對象編程
購物車程序
ATM信用卡程序開發
計算器程序開發
模擬人生遊戲開發
2.網絡編程:
Socket c/s編程 Twisted異步網絡框架、網絡爬蟲開發
多線程、多進程、協程gevent、select\poll\epoll
生產者消費者模型
審計堡壘機系統開發
FTP服務器開發
批量命令、文件分佈工具
RabbitMQ消息隊列、SqlAlchemy ORM
類SaltStack配置管理工具開發
Reids\MemCache\MongoDB 緩存數據庫
3.Web基礎開發:
Html/Css基礎
Dom編程
原生JS學習
jQuery/EasyUi/AngulaJS
Ajax異步加載
Highchart畫圖
Bootstrap
4.算法&設計模式
冒泡、二叉樹、哈希、拆半 等常見的算法學習
工廠模式、單例模式、享元模式、代理模式等經常使用的設計模式學習
5.PY Web框架:
MVC架構講解
自行開發一個Web框架
Django\pyramid\Tornado\Bottle\Flask\WebPy框架學習
Session\中間件\ORM\Cookie\CSRF\FORM...
Restful API框架
權限管理後臺開發
開發BBS論壇
開發WEB聊天室
6.項目實戰篇:
購物商城開發
主機管理+任務編排+運維審計堡壘機開發
分佈式類Nagios/Zabbix監控產品開發
CMDB資產管理開發
基於用戶視角的網站訪問質量檢測分析平臺開發
Docker自動化管理平臺開發
OpenStack二次開發
第二課 python的發展介紹
編譯型與解釋型
編譯型:
一次將全部的代碼轉成機器語言,而後寫成可執行文件:C/C++
解釋型:
在程序運行的前一刻,還只有源程序而沒有可執行程序,
而程序每執行源程序的某一條指令,則會有一個稱之爲
解釋程序的外殼程序將源代碼轉換爲二進制代碼以供執行,
總言之,就是不斷地解釋、執行、解釋、執行……因此
解釋型程序是離不開解釋程序的。python java
編譯型語言由於系統兼容性問題,可移植性差,可是運行速度比解釋型語言快。
Java雖然屬於解釋型語言,可是由於預編譯技術,大多數狀況速度要快於pyhton。
動態語言和靜態語言
動態語言:
在運行期間纔去作數據類型檢查的語言,聲明變量時不用指定類型。python JavaScript
靜態語言:
數據類型在編譯期間檢查,寫程序時要聲明全部變量的數據類型。C# java
強類型定義語言和弱類型定義語言
強類型定義語言:
一旦變量被指定了數據類型,如不通過強制轉換,它將永遠是這個數據類型。
是類型安全的語言。pyhton java
弱類型定義語言:
數據類型能夠忽略的語言,一個變量能夠賦不一樣數據類型的值。VBScript
總結:
python是一門動態解釋型強類型定義語言。
優勢:
1.簡單易懂
2.強大的第三方庫
3.高級語言(寫程序時無需考慮管理程序所使用的內存等底層細節)
4.可移植性強
5.可擴展性強
6.可嵌入性
缺點:
1.速度慢(開發搜索引擎建議用C去實現)
2.代碼不能加密
3.線程不能利用多CPU問題(最被詬病的缺點,由於GIL即全局解釋器鎖,禁止了多線程的存在)
第三課 變量\字符編碼
開發工具:
使用pycharm:新建pyhton項目===》新建目錄===》新建py文件
變量:
定義一個變量:
name='abc'
print('my name is ',name)
輸出:
my name is abc
變量命名規則:
1.變量名只能是字母、數字和下劃線的組合
2.第一個字符不能是數字
3.關鍵字不能聲明爲變量(and,as,class,break......)
4.(約定俗成的規則)變量名要有含義
5.(約定俗成的規則)變量名不能用中文
6.(約定俗成的規則)變量名全都大寫表明常量
字符編碼:
128 64 32 16 8 4 2 1 十進制
1 1 1 1 1 1 1 1 二進制
ASCII碼:
用8位(一個字節)表達一個字符,因此只能表達255個字符。
GB2312:
1980年,爲了處理漢字設計了用於簡體中文的GB2312和繁體中文的big5
GB2312收錄了7445個字符
GBK:
1995年,GB2312擴展爲GBK1.0收錄了21886個字符
GB18030:
2000年,GB18030收錄了27484個漢字,成爲國家正式標準
如今PC平臺必須支持GB18030,對嵌入式產品暫時不要求
因此手機、MP3通常只支持GB2312。
Unicode(統一碼、萬國碼、單一碼):
一個字符或符號,最少由16位(兩個字節)來表示
UTF-8:
Unicode的壓縮版,ASCII中包含的內容用一個字節保存。
en字符用1個字節 zh字符用三個字節
第四課 用戶交互程序
註釋:
單行註釋:#
多行註釋:'''code''' 或 """code"""
pycharm註釋快捷鍵:Ctrl+/
格式化輸出:
代碼:
name=input('name:')
age=input('age:')
job=input('job:')
salary=input('salary:')java
info='''
--------info of %s--------
Name:%s
Age:%s
Job:%s
Salary:%s
'''%(name,name,age,job,salary)
print(info)
運行結果:
name:abc
age:18
job:it
salary:1000python
--------info of abc--------
Name:abc
Age:18
Job:it
Salary:1000
流程控制:
if語句:
if 條件:
代碼塊
elif 條件:
代碼塊
else:
代碼塊
while循環語句:
while 條件:
代碼塊
break
for循環遍歷語句:
for i in range(10):
代碼塊
break:
跳出循環體
continue:
跳過本次循環,執行下一次循環ios
做業:
編寫登陸接口:
1.輸入用戶名密碼
2.認證後顯示歡迎信息
3.輸錯三次後鎖定
web