1. 程式人生 > >python的起源

python的起源

常量 facebook 效率 如果 比較 編寫程序 其它 指定編碼 jython

Python簡介及入門

  • 編程語言簡介

  • Python介紹

  • Python安裝

  • pycharm安裝

  • 中文編碼

1.編程語言簡介

編程語言概念

  編程語言(programming language),是用來定義計算機程序的形式語言。它是一種被標準化的交流技巧,用來向計算機發出指令。一種計算機語言讓程序員能夠準確地定義計算機所需要使用的數據,並精確地定義在不同情況下所應當采取的行動。

編程語言的類別

  編程語言分為機器語言匯編語言以及高級語言,一般我們將機器語言、匯編語言這樣的偏向底層設計的統稱為低級語言,低級語言並不是說功能少,而是編程起來相對於高級語言來說太麻煩了。

  高級語言的代表有:Python、Java、PHP、C#·····等等;

  低級語言的代表有:匯編、C······等等;

  編程語言也可以分為編譯型語言解釋型語言

  編譯型語言:編譯器是把源程序的每一條語句都編譯成機器語言,並保存成二進制文件,這樣運行時計算機可以直接以機器語言來運行此程序,速度很快;

解釋型語言:解釋器則是只在執行程序時,才一條一條的解釋成機器語言給計算機來執行,所以運行速度是不如編譯後的程序運行的快的;

當然還有其它的,比如靜態語言動態語言強類型定義語言弱類型定義語言

  技術分享圖片

  編譯型VS解釋型

編譯型

優點:編譯器一般會有預編譯的過程對代碼進行優化。因為編譯只做一次,運行時不需要編譯,所以編譯型語言的程序執行效率高,可以脫離語言環境獨立運行。

缺點:編譯之後如果需要修改就需要整個模塊重新編譯。編譯的時候根據對應的運行環境生成機器碼,不同的操作系統之間移植就會有問題,需要根據運行的操作系統環境編譯不同的可執行文件。

解釋型

優點:有良好的平臺兼容性,在任何環境中都可以運行,前提是安裝了解釋器,靈活,修改代碼的時候直接修改就行,可以快速部署,不用停止維護。

缺點:每次運行的時候都要解釋一遍,性能上不如編譯型語言。

  

高級語言和低級語言的優缺點

  高級語言,優點:開發快,缺點:執行效率低,需要將代碼轉化成字節碼,然後將字節碼再編譯成機器碼供計算機識別執行;

  低級語言,優點:執行效率高,缺點:開發慢,不放變編寫,編寫後的代碼可直接供計算機識別執行;

機器碼和字節碼介紹

  機器碼:

  學名機器語言指令,有時也被稱為原生碼(Native Code),是電腦的CPU可直接解讀的數據。通常意義上來理解的話,機器碼就是計算機可以直接執行,並且執行速度最快的代碼,用機器語言編寫程序,編程人員要首先熟記所用計算機的全部指令代碼和代碼的涵義。手編程序時,程序員得自己處理每條指令和每一數據的存儲分配和輸入輸出,還得記住編程過程中每步所使用的工作單元處在何種狀態。這是一件十分繁瑣的工作,編寫程序花費的時間往往是實際運行時間的幾十倍或幾百倍。而且,編出的程序全是些0和1的指令代碼,直觀性差,還容易出錯。

  總體來說,機器碼是電腦CPU直接讀取運行的機器指令,運行速度最快,但是非常晦澀難懂,也比較難編寫,一般從業人員接觸不到。

  字節碼:

  字節碼(Bytecode)是一種包含執行程序、由一序列 op 代碼/數據對 組成的二進制文件字節碼是一種中間碼,它比機器碼更抽象,需要直譯器轉譯後才能成為機器碼的中間代碼。通常情況下它是已經經過編譯,但與特定機器碼無關。字節碼通常不像源碼一樣可以讓人閱讀,而是編碼後的數值常量、引用、指令等構成的序列。字節碼主要為了實現特定軟件運行和軟件環境、與硬件環境無關。字節碼的實現方式是通過編譯器和虛擬機器。編譯器將源碼編譯成字節碼,特定平臺上的虛擬機器將字節碼轉譯為可以直接執行的指令。

  總體來說,字節碼是一種中間狀態(中間碼)的二進制代碼(文件)。需要直譯器轉譯後才能成為機器碼。

  高級語言生成的是字節碼,再由各語言的編譯器進行編譯後轉成機器碼供計算機執行。

  低級語言生成的是機器碼,可直接由計算機執行。

編碼介紹

  編碼是信息從一種形式或格式轉換為另一種形式的過程也稱為計算機編程語言的代碼簡稱編碼。用預先規定的方法將文字、數字或其它對象編成數碼,或將信息、數據轉換成規定的電脈沖信號。

  種類:

  ASCII、Unicode、utf8、gbk等等;

  a.ASCII

  目前計算機中用得最廣泛的字符集及其編碼,是由美國國家標準局(ANSI)制定的ASCII碼。適用於所有拉丁文字字母,ASCII碼有7位碼和8位碼兩種形式。

  我們知道,在計算機內部,所有的信息最終都表示為一個二進制的字符串。每一個二進制位(bit)有0和1兩種狀態,因此八個二進制位就可以組合出256種狀態,這被稱為一個字節(byte)。也就是說,一個字節一共可以用來表示256種不同的狀態,每一個狀態對應一個符號,就是256個符號,從 0000000到11111111。

  ASCII碼一共規定了128個字符的編碼,這128個符號(包括32個不能打印出來的控制符號),只占用了一個字節的後面7位,最前面的1位統一規定為0。

  缺點:英語用128個符號編碼就夠了,但是用來表示其他語言,128個符號是不夠的。比如,在法語中,字母上方有註音符號,它就無法用ASCII碼表示。於是,一些歐洲國家就決定,利用字節中閑置的最高位編入新的符號。比如,法語中的é的編碼為130(二進制10000010)。這樣一來,這些歐洲國家使用的編碼 體系,可以表示最多256個符號。但是,這裏又出現了新的問題。不同的國家有不同的字母,因此,哪怕它們都使用256個符號的編碼方式,代表的字母卻不一樣。比如,130在法語編碼中代表了 é,在希伯來語編碼中卻代表了字母Gimel (?),在俄語編碼中又會代表另一個符號。但是不管怎樣,所有這些編碼方式中,0—127表示的符號是一樣的,不一樣的只是128—255的這一段。至於亞洲國家的文字,使用的符號就更多了,漢字就多達10萬左右。一個字節只能表示256種符號,肯定是不夠的,就必須使用多個字節表達一個符號。比如,簡體中文常見的編碼方式是GB2312,使用兩個字節表示一個漢字,所以理論上最多可以表示256x256=65536個符號。

  b.Unicode

  世界上存在著多種編碼方式,同一個二進制數字可以被解釋成不同的符號。因此,要想打開一個文本文件,就必須知道它的編碼方式,否則用錯誤的編碼方式解讀,就會出現亂碼。為什麽電子郵件經常出現亂碼?就是因為發信人和收信人使用的編碼方式不一樣。

  可以想象,假如有一種編碼,將世界上所有的符號都納入其中。每一個符號都給予一個獨一無二的編碼,那麽亂碼問題就會消失。這就是Unicode,就像它的名字都表示的,這是一種所有符號的編碼。

  缺點:浪費內存;我們已經知道,英文字母只用一個字節表示就夠了,假如unicode統一規定,每個符號用三個或四個字節表示,那麽每個英文字母前都必然有二到三 個字節是0,這對於存儲來說是極大的浪費,文本文件的大小會因此大出二三倍,這是無法接受的。

  c.utf8

  UTF-8就是在互聯網上使用最廣的一種unicode的實現方式。UTF-8最大的一個特點,就是它是一種變長的編碼方式。它可以使用1~4個字節表示一個符號,根據不同的符號而變化字節長度。

  UTF-8的編碼規則很簡單,只有二條:

  1)對於單字節的符號,字節的第一位設為0,後面7位為這個符號的unicode碼。因此對於英語字母,UTF-8編碼和ASCII碼是相同的。

  2)對於n字節的符號(n>1),第一個字節的前n位都設為1,第n+1位設為0,後面字節的前兩位一律設為10。剩下的沒有提及的二進制位,全部為這個符號的unicode碼。

  d.gbk

  GBK是中國國家編碼,通用性比UTF8差,不過UTF8占用的空間比GBK大。

  UTF8是國際編碼,它的通用性比較好,外國人也可以瀏覽論壇,而且中文可以直接識別,假如你的論壇要做的比較國際化那就必須用UTF8。

2.Python介紹

Python由來

  Python的創始人為Guido van Rossum。1989年聖誕節期間,在阿薩姆特丹,Guido為了打發聖誕節的無趣,決心開發一個新的腳本解釋程序,作為ABC 語言的一種繼承。之所以選中Python(大蟒蛇的意思)作為該編程語言的名字,是因為他是一個叫Monty Python的喜劇團體的愛好者。

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

Python和其他語言區別

  技術分享圖片

  大多數高級語言都是在C語言的基礎上開發的,比如Python、Java、C#......等等;

  C vs Python、Java、C#等等:

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

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

  Python也稱C Python由C語言開發而來:

  對於使用:Python的類庫齊全並且使用簡潔,如果要實現同樣的功能,Python 10行代碼可以解決,C可能就需要100行甚至更多.
  對於速度:Python的運行速度相較與C,比較慢,沒有C執行的快;

  Python vs Java、C#等等:

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

Python種類

  技術分享圖片

  • CPython
    Python的官方版本,使用C語言實現,使用最為廣泛,CPython實現會將源文件(py文件)轉換成字節碼文件(pyc文件),然後運行在Python虛擬機上。
  • JPyhton
    Python的Java實現,Jython會將Python代碼動態編譯成Java字節碼,然後在JVM上運行。
  • IronPython
    Python的C#實現,IronPython將Python代碼編譯成C#字節碼,然後在CLR上運行。(與Jython類似)
  • PyPy(特殊)
    Python實現的Python,將Python的代碼轉換字節碼再編譯成機器碼。優點,在第二次執行代碼是則直接將代碼轉換成機器碼交給計算機去執行。
  • RubyPython、Brython ...

3.Python安裝

在Windows環境下:

技術分享圖片
1.從官網下載2.x系列和3.x系列的安裝包:
   https://www.python.org/downloads/
2.安裝:
   默認安裝路徑:C:\python,可自定義安裝;
3.配置環境變量:
   【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名為Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】
    如:原來的值;C:\python27,切記前面有分號
技術分享圖片

在Linux環境下:

1.Linux環境下,默認安裝了python2.x系列;
2.再安裝一個3.x系列;

4.pycharm軟件

pycharm簡介

  PyCharm是一種Python IDE,帶有一整套可以幫助用戶在使用Python語言開發時提高其效率的工具,比如調試、語法高亮、Project管理、代碼跳轉、智能提示、自動完成、單元測試、版本控制。此外,該IDE提供了一些高級功能,以用於支持Django框架下的專業Web開發。

pycharm安裝

  具體安裝方法見度娘!

5.中文編碼

  在python2中如果未指定編碼,在執行過程中遇到中文會出現報錯:

print "向未來"
--------輸出結果---------
SyntaxError: Non-ASCII character ‘\xe8‘ in file C:/Users/Administrator/Desktop/python/zjk/zjk1.py on line 28, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details

  Python中默認的編碼格式是 ASCII 格式,在沒修改編碼格式時無法正確打印漢字,所以在讀取中文時會報錯。

  解決方法為只要在文件開頭加入 # -*- coding: UTF-8 -*- 或者 #coding=utf-8 就行了。

  註意:“ #coding=utf-8”等號兩邊不要加空格;

  如下:

# -*-coding:UTF-8 -*-
print "向未來"
--------輸出結果---------
向未來16:59:4616:59:4916:59:51

  註意:python3源碼文件默認使用utf-8編碼,所以可以正常解析中文,無需指定編碼,但為了更好更方便使用,最好還是加上。

python的起源