第六節,初識python和字符編碼

程序語言的發展php

  機器語言html

  程序語言,最初的計算機語言是機器語言,徹底是0和1組成的二進制串java

   如:01010101python

     11010101linux

  彙編語言c#

  由於01010101的字符串,冗長,不利於維護,因此產生了帶助記符的彙編語言windows

  舉例:fua = 01010101網絡

       fub = 11010101運維

  c語言python2.7

  在彙編的基礎上開發了c語言

  有了常量,變量,字符串,等運算規則

  java、c#、php、python

  在c語言的基礎長有發展了java、c#、php、python 等各類語言

  這些語言都須要安裝運行環境,也能夠理解成軟件,

 

 

叫賣錄音網
錄音網站大全

 

Python前世此生

python的創始人爲吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆爲了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,做爲ABC語言的一種繼承。 

Python能夠應用於衆多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等衆多領域。目前業內幾乎全部大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。互聯網公司普遍使用Python來作的事通常有:自動化運維自動化測試大數據分析、爬蟲、Web 等。

注視:上述重點字體表示該公司主要使用Python語言開發

爲何是Python而不是其餘語言?

C 和 Python、Java、C#等

    C語言: 代碼編譯獲得 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工做

其餘語言: 代碼編譯獲得 字節碼 ,虛擬機執行字節碼並轉換成機器碼再後在處理器上執行

Python 和 C  Python這門語言是由C開發而來

  對於使用:Python的類庫齊全而且使用簡潔,若是要實現一樣的功能,Python 10行代碼能夠解決,C可能就須要100行甚至更多.
  對於速度:Python的運行速度相較與C,絕逼是慢了

Python 和 Java、C#等

  對於使用:Linux原裝Python,其餘語言沒有;以上幾門語言都有很是豐富的類庫支持
  對於速度:Python在速度上可能稍顯遜色

因此,Python和其餘語言沒有什麼本質區別,其餘區別在於:擅長某領域、人才豐富、先入爲主。

 

Python的種類

  • Cpython
        Python的官方版本,使用C語言實現,使用最爲普遍,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),而後運行在Python虛擬機上。
  • Jyhton
        Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,而後在JVM上運行。
  • IronPython
        Python的C#實現,IronPython將Python代碼編譯成C#字節碼,而後在CLR上運行。(與Jython相似)
  • PyPy(特殊)
        Python實現的Python,將Python的字節碼字節碼再編譯成機器碼。
  • RubyPython、Brython ...

以上除PyPy以外,其餘的Python的對應關係和執行流程以下:


Python環境

安裝Python

  windows:

  一、下載安裝包     https://www.python.org/downloads/

  二、安裝     默認安裝路徑:C:\python27

  三、配置環境變量     【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名爲Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】     如:原來的值;C:\python27,切記前面有分號

  linux:

  無需安裝,原裝Python環境   ps:若是自帶2.6,請更新至2.7 更新Python

  windows:

  卸載重裝便可

  linux:

  Linux的yum依賴自帶Python,爲防止錯誤,此處更新其實就是再安裝一個Python

  查看默認Python版本 python -V  

  一、安裝gcc,用於編譯Python源碼     yum install gcc

  二、下載源碼包,https://www.python.org/ftp/python/

  三、解壓並進入源碼文件

  四、編譯安裝     ./configure     make all     make install

  五、查看版本     /usr/local/bin/python2.7 -V

  六、修改默認Python版本     mv /usr/bin/python /usr/bin/python2.6     ln -s /usr/local/bin/python2.7 /usr/bin/python

  七、防止yum執行異常,修改yum使用的Python版本     vi /usr/bin/yum     將頭部 #!/usr/bin/python 修改成 #!/usr/bin/python2.6

 

Python入門

  Python的運行方式

  終端運行方式:

  打開Python終端,輸入print "ni hao"

  >>> print "ni hao"      回車
  ni hao

  這樣就將ni hao打印出來了

  

  文件運行方式:

  用編輯器將 print "ni hao" 寫入編輯器,保存成Python文件,以.py 後綴方式保存

  

  

  打開終端不啓動Python   輸入Python 文件路徑  如:I:\py\1\n.py       回車執行

  

  這樣就執行了n.py並把文件內容讀出來了

  二者之間的區別,終端執行是執行一次關閉終端後不保留代碼,文件執行是能夠屢次執行,而且代碼寫入了.py文件裏

  注意:Python2.7和3.5的函數區別 如:print函數

  2.7 print "ni hao"

  3.5 print ("ni hao")

  兩個版本之間在函數的書寫格式上,3.5必須加括號()      2.7 能夠加括號() 也能夠不加

 

Python解釋器     

  能夠理解爲解釋代碼或者代碼文件的軟件

  上面能夠看到咱們在終端裏輸入了  Python I:\py\1\n.py   這樣就是說告訴了系統用Python解釋器,解釋I:\py\1\n.py這個文件

  若是想要訪問文件時自動執行python解釋器,例輸入: ./n.py ,那麼就須要在 n.py文件的頭部指定解釋器

  若是須要解釋器自動執行一種字符編碼方式解釋,也須要在頭部指定字符編碼

  如 

  

  這樣當系統訪問文件時,就告訴了系統,我這個文件須要Python解釋器解釋 而且以utf-8的編碼

  假如這個文件在根目錄下,如此一來,執行: ./n.py 便可。

  注意:執行前需給予 n.py 執行權限,chmod 755 n.py

 

內容編碼

字符編碼的發展

   ascii (只能識別英文)

   8位 = 01010101   2**8(2的8次方)= 256  種組合就能夠表示全部的英文,字符,數字

   也就是1個字節就能表示全部的英文,字符,數字

   可是不能表示其餘國家語言如中文

 

  萬國碼 unicode (包含任何國家語言)

  最少用2個字節來表示:

  1個字節 = 8位 = 01010101

  2個字節 = 16位 = 0101010101010101    2個字節就是 2**16(2的16次方)= 65536 種組合

  也就是說萬國碼最少也要用兩個字節來表示

  中文是用3個字節來表示的

  3個字節 = 24位 = 010101010101010101010101   3個字節就是 2**24(2的24次方)= 16777216 種組合

 

  utf-8

  有了萬國碼後人們又發現,形成了運算空間的浪費,明明能夠用1個字節表示的也用了2個字節來表示,後來就又發明了utf-8

  utf-8 是在萬國碼的基礎上進行了加工

  也就是utf-8會自動根據地區語言來判斷用多少位識別

  英文:8位

  歐洲:16位

  中文:24位

  ...

 

因此咱們在寫Python文件是要是有中文漢字,就須要告訴解釋器用什麼編碼

  如: 

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 print '你好 中國'

 若是是Python3.5版本解釋器,就能夠不加編碼,由於默認就是utf-8編碼

也就是說,解釋器默認是utf-8就能夠不加,若是默認不是utf-8就必須加才能識別中文

 

編碼和解碼

  編碼和解碼流程圖

  

  utf-8或者gbk等編碼都是,由萬國碼編碼而來的這個過程叫作(編碼),將utf-8在還原成萬國碼這個過程叫作(解碼)

 

  在python中能夠將某一段字符進行編碼或者解碼

 

  decode()   函數 爲解碼  函數值:爲要解碼的編碼(本來編碼)

    使用方法:要解碼的字符串變量.decode(要解碼的編碼)

     如:jiem = zifu.decode("utf-8")

  encode() 函數 爲編碼  函數值:爲要編的碼(編碼)

    使用方法:要編碼的解碼變量.decode(要編的碼)

 舉例:

1 #!/usr/bin/env python
2 # -*- coding: utf-8 -*-
3 zifu = "中文字符"
4 #解碼,須要指定原來的是什麼編碼
5 jiem = zifu.decode("utf-8")
6 #編碼,須要指定要使用什麼編碼
7 bianm = jiem.encode("gbk")
8 print(bianm)

 

  注意:若是是python3.5或者以上版本,能夠省略解碼的環境,直接第二步從新編碼就能夠,也就是能夠直接將utf-8直接編碼成gbk,(解碼的過程解釋器會自動完成)

相關文章
相關標籤/搜索