python是解釋型腳本語言python
python的特性總結:縮進,動態,字節碼ios
而c語言是編譯型語言,要先編譯gcc hello.c –o hello git
./hello程序員
解釋型和編譯型,二者各有利弊。web
編譯型程序執行快,同等條件下對系統的要求比較低,所以開發系統,大型應用程序和數據庫系統都會用到;算法
解釋型平臺兼容性好,網頁腳本,服務器腳本和輔助開發接口。 shell
動態類型和靜態類型語言數據庫
動態類型語言是指在運行期間纔去作數據類型檢查的語言,也就是說,在動態編程中不用給變量指定數據類型,該語言會在你第一次賦值給變量時,在內部將數據類型記錄下來。編程
靜態類型語言在變量聲明的時候就要指定數據類型,在編譯期間檢查。設計模式
強類型和弱類型定義語言
強類型是一旦被定義爲某個數據類型,則永遠是這個數據類型。類型安全的語言。
強類型定義語言在速度上可能略遜色於弱類型定義語言,可是強類型定義語言帶來的嚴謹性可以有效的避免許多錯誤。
另外,「這門語言是否是動態語言」與「這門語言是否類型安全」之間是徹底沒有聯繫的!
例如:Python是動態語言,是強類型定義語言(類型安全的語言); VBScript是動態語言,是弱類型定義語言(類型不安全的語言); JAVA是靜態語言,是強類型定義語言(類型安全的語言)。
而對於python python hello.py
在運行腳本以前,獲得結果以後
1.python先將腳本編譯成字節碼(pyc,pyo)
2.python虛擬機解釋並運行字節碼文件
對於編譯型語言的內部機制
1.先將源代碼編譯成機器碼(機器能讀懂的代碼),生成可執行文件
2.運行可執行文件
python比c運算速度慢
python在賦值時確認數據類型
有的編輯器tab鍵縮進方式是四個空格
import this
python是一門動態解釋性的強類型定義語言
Python是著名的「龜叔」Guido van Rossum在1989年聖誕節期間,爲了打發無聊的聖誕節而編寫的一個編程語言。
import time import webbrowser total_breaks=3 break_count=0 while(break_count<total_breaks): time.sleep(10) webbrowser.open("http://www.youtube.com/watch?v=dqhfefyh) break_count=break_count+1
import os def rename_files() #(1) get all the name file_list=os.listdir(r"C:\OOP\prank") print(file_list) saved_path=os.getcwd() print("Current working directory is "+ saved_path) os.chdir(r"C:\OOP\prank") #(2) for each file, rename the file for file_name in file_list: os.rename(file_name, file_name.translate(None,"0123456789")) os.chdir(saved_path) rename_files()
shell
shell +sublime
PyChm
IDLE
機器語言:機器能夠讀的0,1
彙編語言:可讀性比機器語言增長的
高級語言:相似於天然語言
控制器,處理器,存儲器,輸入輸出設備
用Python能夠作什麼?
預測將來最好的辦法就是創造它
Python擅長的領域
Web開發 Django\pyramid\Tornado\Bottle\Flask\WebPy
網絡編程 Twisted\Requests\Scrapy\Paramiko
科學運算 SciPy\Pandas\Ipython
GUI圖形開發 wxPython\PyQT\Kivy
運維自動化 OpenStack\SaltStack\Ansible\騰訊藍鯨
能夠作平常任務,好比自動備份你的MP3;能夠作網站,不少著名的網站包括YouTube就是Python寫的;能夠作網絡遊戲的後臺,不少在線遊戲的後臺都是Python開發的。
首選是網絡應用,包括網站、後臺服務等等;其次是許多平常須要的小工具,包括系統管理員須要的腳本任務等等;另外就是把其餘語言開發的程序再包裝起來,方便使用。
Python固然也有不能幹的事情,好比寫操做系統,這個只能用C語言寫;寫手機應用,只能用Objective-C(針對iPhone)和Java(針對Android);寫3D遊戲,最好用C或C++。C語言是能夠用來編寫操做系統的貼近硬件的語言,因此,C語言適合開發那些追求運行速度、充分發揮硬件性能的程序。而Python是用來編寫應用程序的高級編程語言。
Python就爲咱們提供了很是完善的基礎代碼庫,覆蓋了網絡、文件、GUI、數據庫、文本等大量內容,被形象地稱做「內置電池(batteries included)」。用Python開發,許多功能沒必要從零編寫,直接使用現成的便可。
Python優勢是簡單;開發效率高,有大量的模塊庫不用反覆造輪子;高級語言,不須要考慮諸如內存管理的底層細節。
Python的第一個缺點就是運行速度慢,和C程序相比很是慢,由於Python是解釋型語言,你的代碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程很是耗時,因此很慢。而C程序是運行前直接編譯成CPU能執行的機器碼,因此很是快。但因爲網絡延遲更慢,加上網絡的等待的時間,差距也能夠忽略。
第二個缺點就是代碼不能加密。若是要發佈你的Python程序,實際上就是發佈源代碼,這一點跟C語言不一樣,C語言不用發佈源代碼,只須要把編譯後的機器碼(也就是你在Windows上常見的xxx.exe文件)發佈出去。要從機器碼反推出C代碼是不可能的,因此,凡是編譯型的語言,都沒有這個問題,而解釋型的語言,則必須把源碼發佈出去。
第三個缺點是線程不能利用多CPU問題。
一 語言基礎(5-6)
數據類型
流程控制
經常使用模塊
函數,迭代器,裝飾器
遞歸,迭代,反射
面向對象編程(購物車程序,ATM信用卡開發,計算器程序開發,模擬人生遊戲開發)
二 網絡編程(4-5)
Socket c/s編程, Twisted異步網絡框架,網絡爬蟲開發
多線程,多進程,協程gevent,select\poll\epoll
生產者消費者模型
審計堡壘機系統開發
FTP服務器開發
批量命令,文件分佈工具
RabbitMQ消息隊列,SqlAlchemy ORM
類SaltStack配置管理工具開發
Redis\MemCache\MongoDBhuan緩存數據庫
三 web開發基礎(3-4)
HTML/CSS基礎
Dom編程
原生JS學習
Jquery/EasyUi/AngulaJS
Ajax異步加載
Highchart畫圖
Bootstrap
四 算法與設計模式 (1)
冒泡,二叉樹,哈希,折半等常見算法學習
工廠模式,單例模式,享元模式,代理模式等經常使用設計模式學習
五 PY WEB框架(5)
MVC架構講解
自行開發一個WEB框架
Django\Tornado\Flask\Bottle\WebPy框架學習
Session\中間件\ORM\Cookie\CSRF\FORM...
Restful API框架
權限管理後臺開發
開發BBS論壇
開發WEB聊天室
六 項目實戰篇(8)
購物商場開發
主機管理+任務編排+運維審計堡壘機開發
分佈式類Nagios/Zabbix監控產品開發
CMDB資產管理開發
基於用戶視角的網站訪問質量監測分析平臺開發
Docker自動化管理平臺開發
OpenStack二次開發
python的語法是很精簡的
必定要注意的是,縮進的格式要求很是嚴格。
BIF=Build in functions 內置函數:爲了程序員快速編寫程序 print input等,python有不少內置函數
在使用變量以前,須要對其先賦值
變量名能夠包括字母,數字,下劃線,但變量不能以數字開頭,字母的大小寫是不一樣的
字符串 」8「+」5「 與8+5不一樣
python的輸入輸出
輸出print
輸出raw_input()
python的數據類型
爲了不語言歧義,類型是編程語言對數據的一種劃分
數字類型
0x 16進制
0b 2進制
0o 8進制
整數
浮點數
複數類型
int(),float(),complex()
type(4.5)
字符串
元組類型
列表類型
文件類型
字典類型
若是字符串內部既包含'
又包含"
怎麼辦?能夠用轉義字符\
來標識,好比:
'I\'m \"OK\"!'
轉義字符\
能夠轉義不少字符,好比\n
表示換行,\t
表示製表符,字符\
自己也要轉義,因此\\
表示的字符就是\
若是字符串裏面有不少字符都須要轉義,就須要加不少\
,爲了簡化,Python還容許用r''
表示''
內部的字符串默認不轉義>>> print '\\\t\\'
\\n\t\\\\
\ \
>>> print r'\\\t\\'
\\\t\\
若是字符串裏面有不少字符都須要轉義,就須要加不少\
,爲了簡化,Python還容許用r''
表示''
內部的字符串默認不轉義
\r''''>>> print '\\\t\\'
\ \
>>> print r'\\\t\\'
\\\t\\
布爾值
and, or,not
空值
None不能理解爲0,由於0是有意義的,而None是一個特殊的空值。
列表
字典
import引入外部庫(turtle,math,random)
def用於定義函數
字符串
遍歷字符串中的每一個字符
for <var> in <string>
<string>.upper() 字符串字母大寫
<string>.lower() 字符串中字母小寫
<string>.capitalize() 首字母大寫
<string>.strip() 去兩邊空格及去指定字符
<string>.split() 按指定的字符分割字符串爲數組
<string>.isdigit() 判斷是不是數字類型
<string>.find() 搜索指定字符串
<string>.replace() 替換指定內容