很喜歡的一句話,與諸位共勉。python
人的一切痛苦,本質上都是對本身無能的憤怒----王小波。c++
首先,咱們須要認識下面這位人物。程序員
他是Python的創始人,吉多範羅蘇姆(Guido van Rossum)。1989的聖誕節爲了打法時間開發出來的。哎,想一想,都是差距....編程
一、C語言編譯完就是機器碼,機器碼能夠直接在處理器上執行。ruby
二、CPU能夠直接讀取機器碼。網絡
三、Python是用C寫的。運維
四、Python解釋器會把代碼內容讀到內存裏,經過Python解釋器翻譯成字節碼。學習
五、CPU不能直接讀取字節碼,須要把字節碼轉換成機器碼。優化
anyway,soui
Python對於C來講,就多了一個字節碼轉換成機器碼的過程,因此相對會慢。可是人爲是沒法感知的。
TIOBE排行,看看Python的地位
URL在此,猛戳有驚喜:http://www.oschina.net/news/75895/tiobe-2016-8
語言趨勢走向
一、優雅
二、明確
三、簡單
anyway,so
還有咱們最喜歡的
money!!
好的,既然Python這麼牛逼,那麼都有哪些應用呢?
常見的有這麼幾個:
一、數據分析(我有一同事就是拿Python來寫策略炒股)
二、系統編程
三、組件集成
四、網絡服務(最爲普遍)
五、圖像處理
六、數值計算和科學計算
有哪些企業在用Python呢?
常見的也有這麼幾個:
YouTube,dropbox (能夠免費申請玩玩,雲存儲),BT,Quora(中國盜版就是知乎)、我大谷歌,Yahoo,facebook、NASA(屌絲特斯拉最膜拜的)等等
最重要的仍是咱們即將要開啓的自動化運維。解放雙手,讓你從新作運維。
Python有下面幾個種類:
一、Cpython
Python的官方版本,使用C語言實現,使用最爲普遍,咱們經常使用的也是這個版本。
二、JPython
Python的Java實現,拿到代碼後,會編譯成Java的字節碼,跟寫的Java代碼是同樣的,而後再執行。
三、ironPython
IronPython是另外一很流行的Python 實現,徹底用C#實現,針對.NET平臺。她運行在能夠叫作.NET虛擬機的平臺上,這是微軟的 Common Language Runtime (CLR),同JVM相對應。
四、pypy
Python實現的Python,把寫的代碼最終編譯成機器碼。(C能夠直接把代碼編譯成機器碼),咱們知道,Python會把代碼先編譯成字節碼,拿到字節碼以後繼續編譯成機器碼,在執行的時候呢,就至關於跟C同樣快了,只不過是浪費了編譯時間。
其實快慢程度對於程序員來講是沒有任何感知的,區別在於虛擬機不一樣,把代碼編譯成不一樣的字節碼。
爲何有這麼多Python,也許你須要看看這個http://www.oschina.net/translate/why-are-there-so-many-pythons?print。這裏有你想要的答案。
編譯型語言:編譯器把源程序的每一條語句都編譯成機器語言,並保存爲二進制文件,這樣運行時計算機能夠直接以機器語言來運行此程序,速度很快。就比如,你跟一個日本人聊天,中間有一個翻譯官,你一次性說了5分鐘,翻譯把你5分鐘說的話翻譯給日本人。
解釋器語言:解釋器在執行程序時,才一條一條的解釋成機器語言給計算機來執行,因此裕興速度是不如編譯後的程序運行的快的。就比如,你仍是跟一個日本人聊天,中間仍是有一個翻譯官,你說一句,它翻譯一句。
那麼,爲什麼要編譯器呢?
由於計算機不能直接認識並執行咱們寫的語句,它呢只認識機器語言(二進制的形式)。
接下來,就說說編譯型語言和解釋型語言有哪些?
常見的編譯型有c和c++等
舉個栗子:
把c語言代碼編譯成機器碼0和1,就須要編譯器gcc來實現,編譯以後就能夠直接交給機器來執行,這個呢是在Linux下編譯使用的,若是換了一個平臺,好比說換到Windows上面呢,那麼就須要另一個編譯器來編譯,而後執行。
那麼,問題來了。
很明顯,在可移植性這方面,就比較差了。讓人很不愉快。可是呢,因爲是直接編譯成機器碼因此運行速度快。
常見的解釋型語言有Python,ruby,PHP(世界上最牛逼的語言,沒有之一),Java等
它的特色就是邊執行邊解釋,速度慢(相對而言),解釋器優秀支持跨平臺,一處編譯呢,處處執行。
優勢:
一、上手簡單
二、開發效率高
三、高級語言
四、可移植性好
五、可擴展性好
六、可嵌入性
缺點:
一、速度慢,相對而言
二、代碼不能加密
三、線程不能利用多CPU問題
Python安裝很簡單,我主要用到Windows和Linux版本,而Linux版本原裝Python,anyway,so,講解一下如何在Windows上安裝Python3.0
一、下載安裝包
https://www.python.org/downloads/
二、安裝
安裝路徑:C:\python3
三、配置環境變量
【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】
如:原來的值;C:\python3,切記前面有分號
是的沒錯,就是hello world!!
#!/usr/bin/env python # -*- coding: utf-8 -*- #Author: Leon xie print("hello world!")
解釋說明:
第一句: 聲明告訴執行文件使用Python解釋器來執行
第二句: 聲明字符編碼爲utf-8
第三局: 做者信息,讓你們知道這麼牛逼的代碼是誰寫的
第四句: 打印輸出hello world!!
PS:這個打印輸出的格式是在Python3.0以上環境上使用,Python2環境的話會有些許區別。
變量的定義: 一個在內存存儲數據的變量。
意義:爲何要有變量?由於它保存程序執行的中間結果或者狀態,以供後面的代碼進行調用。
變量的格式: 名字 = 對應的值
好比: dayone = 100
舉個栗子:
name ="jixuege"
上面聲明瞭一個變量name,變量name的值爲 「jixuege」
變量名要求:
a、變量名只能由字母,下劃線或數字的任意組合。
b、變量名的第一個字符不能是數字。
c、聲明變量名要避開關鍵字。
以下所示:
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
首先,科普一下姿式,我也不知道對不對。
咱們知道,計算機底層呢都是電流,電流默認是表示不了數字的,因此呢,咱們就給它加一個開關。能夠表示2種狀態0和1,也就是咱們接下來要講的二進制。
接下來咱們能夠想象,Alex有特麼開始講烽火臺了,這個故事聽的我(此處省略100字)….
故事大概的意思就是古時候如何經過點狼煙來告訴友軍有多少敵軍攻城(如何經過最少的排列數字去表明更大的數字。)
接下來,我要認真起來了:
1個二進制數字只有兩種狀態(0和1),在計算機裏表明1個比特(bit)= 計算機最小存儲單位。
1個字節(bytes)=8個比特 即 1bytes = 8 bit
1024個字節(bytes)= 1kb 即 1kb = 1024 bytes
1024個kb = 1兆(1mb) 即 1mb = 1024kb
1GB = 1024mb 即 1GB = 1024mb
1TB = 1024 GB
1PB=1024 tb
知道這些關係以後呢,咱們要說的就是最先的默認編碼ascii碼了。
上圖是ascii碼的一部分。
咱們要知道,計算器是老外發明的,因此他們出的字符編碼只是針對本身的使用。
1個字母呢就是1個字節。用8位的話能夠表示256種狀態(0-255),最大就是255,由於有了ASCII碼,8位正好是 一個字節。1個字節表明1個字符。
Python解釋器把文本讀到內存裏,讀取內容是按照ASCII碼來讀取的,而ASCII不能表示中文,因此很尷尬。後來就出現了GB2312,能夠支持中文,可是呢,支持漢字太少了(收錄了7445個字符,包括6763個漢字和682個其餘符號),要知道咱們中華文字博大,徹底不夠用嘛,因而出現了GBK1.0,接着是GB18030。
Windows呢默認GBK,以下圖。
即便如此,仍是不能包含全世界的語言,因而出現了萬國碼(Unicode)
它最少用2個字節來表示,即16位。有2的16次方,這樣一來能夠表示更多的字符或者符號,漢字也都包含進來,可是呢,1個Unicode最少2個字節也就是16位,有點浪費。因而出現了UTF-8,它是對Unicode編碼的壓縮和優化,它的特性就是對於能夠用8位表示的都用8位來表示,16位表示用16位,32位表示用32位,而不是最少用16位表示了,而是用8位,節省了空間。
總的來講:ASCII碼只能表示256種,Unicode能夠表示所有,佔位最少16位,UTF-8對Unicode加工,讓佔用內存更合理。
這就是爲什麼須要指定字符編碼爲UTF-8的緣由。 # -*- coding:utf-8 -*-(Python解釋器讀這個文件的時候,指定以什麼方式來讀,而不是用默認的ASCII碼了)。
小結:
ASCII碼是計算機誕生時候的標準,8位,出了Unicode後,最小16位,Unicode表示中文用3個字節,就是24位,8位表示不了,這個狀況下出現一個浪費,就是內存資源浪費,由於Unicode最少16位,可是Unicode寫英文的時候,只須要使用8位,由於這個狀況纔出來utf-8,能夠理解爲Unicode的字系列,全部英文仍是用ASCII形式存放,可是中文,該用3個字節,就用3個字節,避免了空間的浪費。因此之後寫代碼的時候加入這個coding:utf-8便可。
Python3.0以後,默認編碼就是utf-8
終於到寫代碼的時刻了,簡單列舉幾個代碼:
交互輸入
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 #Author: Leon xie 4 5 print(input("name:")) 6 print(input("age:"))
結果輸出
name:xiedi xiedi age:22 22
接下來,咱們使用佔位符%s
# 傳變量
name = input("name:") age = input("age:") job = input("job:") hobby = input("hobby:") #print("my name is",name,"i am",age,"years old,\n" # "my job is",job,"my hobby is",hobby)
# 佔位符
info = ''' -----info of %s-------- Name: %s Age: %s Job: %s Hobby: %s ----------end------------- ''' %(name,name,age,job,hobby) print(info)
輸出效果以下:
說明:
第一句:
name = input("name:")
其中name爲字符串,因此須要加上引號告訴Python,它是字符串,數字不須要加引號。
最後一句:
其中info是一個變量,三個單引號是註釋多行,裏面的%s是佔位符,就是把這個地方霸佔掉,後面%(name,name,age,job,hobby)就是把變量傳給佔位的佔位符,記住須要按照順序來給。
寫一個簡單的登陸
#!/usr/bin/env python # -*- coding: utf-8 -*- #Author: Leon xie name = input("請輸入用戶名:") passwd = input("請輸入密碼:") # 流程控制 if name == "xiedi" and passwd == "123": print("welcome to login")else: print("error,exit")
猜年紀
#!/usr/bin/env python # -*- coding: utf-8 -*- #Author: Leon xie age = 20 gues_age = int(input("age:")) # str --> int if gues_age == age: print("right!!") elif gues_age > age: print("try smaller.....") else: print("try bigger...")
目前爲止,咱們知道了下面幾個知識點
一、Python是怎麼來的。
二、哪些公司在使用。
三、Python與其餘語言的區別。
四、應該學習哪一個版本的Python,各自有何優缺點。
五、如何給Python指定解釋器和字符編碼。
六、Python提供了大量的類庫(不是內褲)供選擇。
七、Linux原裝Python。
八、字符編碼。
九、變量及使用。
十、流程控制。