一、python介紹以及發展史
1.1 python的介紹:
簡單點來說吧,python這玩意兒是一個叫做Guido van Rossum的程序猿在1989年的聖誕打發時間而決心去開發的一個腳本編程語言。它之前的名字是以abc語言的一種繼承。之所以叫做python,那是因為這個偉大的程序員Guido van Rossum是BBC電視劇——蒙提·派森的飛行馬戲團(Monty Python‘s Flying Circus)的愛好者。
1.2 為毛要學習python:
學習python首先要去了解python是個什么類型的語言,得要從編程語言的分類中去了解一下
編程語言主要從以下幾個角度進行分類:
- 編譯型和解釋型:
- 編譯型語言
咱也不用去過多過專業的去說這個概念,簡而言之編譯型語言就是一次把所有的代碼轉換成機器語言,然后寫成可執行文件。典型代表是像C/C++、Pascal/Object Pascal(Delphi)、VB等基本都可視為編譯語言。
-
- 解釋型語言
然而相對於解釋型語言在程序運行的前一刻,還只有源程序而沒有可執行程序;而程序每執行到源程序的某一條指令,則會有一個稱之為解釋程序的外殼程序將源代碼轉換成二進制代碼以供執行,總言之,就是不斷地解釋、執行、解釋、執行……所以,解釋型程序是離不開解釋程序的。像是Java、JavaScript、VBScript、Perl、Python這些開發語言就是解釋型語言。
-
- 總結一下:
對於編譯型語言和解釋型語言的簡單理解就像是一場翻譯一樣,編譯型語言可以理解成翻譯過程中一口氣說完了然后再翻譯一樣;對於解釋型語言就像是逐句翻譯一樣啦。
- 動態語言和靜態語言
- 動態語言:
動態類型語言是指在程序運行期間才去做數據類型檢查的語言,簡而言之就是在動態類型的語言編程時,永遠不用給任何變量指定數據類型,該語言會在你第一次賦值給變量的時候,在其內部將數據類型記錄下來。對於python和ruby就是其中的代表了。
-
- 靜態語言:
靜態語言就是在程序運行之前(也就是在編譯的時候)就要檢查數據類型的語言。說白了也就是第一次在給變量賦值時要提前聲明變量類型。靜態類型語言與動態類型語言剛好相反。C/C++是靜態類型語言的典型代表,其他的靜態類型語言還有C#、JAVA等。
- 強定義類型和弱定義類型語言
- 強定義類型語言
強制數據類型定義的語言,也就是說一個數據類型定義之后要是不經過轉換就還是之前的數據類型。像是咱么學習的python就是其中的代表。
-
- 弱定義類型語言
數據類型可以被忽略的語言。它與強類型定義語言相反, 一個變量可以賦不同數據類型的值。
-
- 綜上所述:python是一門動態解釋性的強類型定義語言
python的優缺點:
- 優點:通俗易懂簡潔明了;是一種開發效率比較高的高級編程語言; 還具有較高的可移植性、可拓展性和可嵌入性。
- 缺點:運行的速度當然比不過C語言;代碼不能加密;線程不能利用多CPU的問題。
- 總之:每一種開發語言自然有其特點,對於我們學習這一門編程語言,對此我能說表達只能是,不要跟SB理論,SB會把你拉到跟他一樣的高度,然后用充分的經驗把你打倒。
python的解釋器:
什么叫解釋器呢,簡單點的理解就是將python語言轉換成計算機能夠識別或者讀懂的字節碼的一個玩意兒。
- 像是基於C語言的Python解釋器就叫做Cpython,也是使用比較廣的一種python解釋器了
- IPython是基於CPython之上的一個交互式解釋器,也就是說,IPython只是在交互方式上有所增強,但是執行Python代碼的功能和CPython是完全一樣的。好比很多國產瀏覽器雖然外觀不同,但內核其實都是調用了IE
-
PyPy是另一個Python解釋器,它的目標是執行速度。PyPy采用JIT技術,對Python代碼進行動態編譯(注意不是解釋),所以可以顯著提高Python代碼的執行速度;絕大部分Python代碼都可以在PyPy下運行,但是PyPy和CPython有一些是不同的,這就導致相同的Python代碼在兩種解釋器下執行可能會有不同的結果。如果你的代碼要放到PyPy下執行,就需要了解PyPy和Cpython的不同特點了
- 對於Jpython是運行在Java平台上的Python解釋器;IronPython和Jython類似,只不過IronPython是運行在微軟.Net平台上的Python解釋器;對於我們的學習然而並沒什么卵用
二、python的發展史及其安裝
2.1 python的發展史
- 對於現在的學習,我們需要了解的python的發展,需要了解即可:
- 1999年提出了第一個web框架-ZOPE
- 2000年發布了python2.0版本,加入了內存回收機制,構成了現在Python語言框架的基礎
- 2004年python2.4版本誕生,同時也誕生了Django這一web框架
- 2008年誕生了python3.0版本,在2.x版本上實現了一次大的跳躍
- 2010年誕生的python2.7也是承接2.x和3.x的一個過渡版本。因為在官方文檔中2.x系列將在2020年結束支持,所以python3.x是必然的趨勢。
2.2 python的安裝
-
For windows
1、下載安裝包 https://www.python.org/downloads/ 2、安裝 默認安裝路徑:C:\python27 3、配置環境變量 【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名為Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】 如:原來的值;C:\python27,切記前面有分號
- FOr linux 參考http://www.jb51.net/article/57926.htm
三、python入門
3.1 hello world程序
第一個程序“hello world!”
#!/usr/bin/env python #聲明python的環境變量,此處加env和不加env的區別就是:加env的會根據系統配置的環境變量去用默認的python環境去解釋程序,沒加env則代表直接通過/usr/bin/python去執行 # -*- coding:utf-8 -*- #聲明字符編碼 print("hello world") #在屏幕上打印“hello world1”
3.2 python中文編碼
在學習python中文編碼之前,我們需要了解一下什么是編碼:
- 編碼是用預先規定的方法將文字、數字或其他對象編成數碼,或將信息轉換成規定的電脈沖信號。編碼是信息從一種形式或格式轉換為另一種形式的過程。
- 然而我們需要了解的字符編碼如下:
- ASCII碼:美國標准信息交換碼;主要用來顯示英文和歐洲語言;其最多只能用 8 位來表示(一個字節),即:2**8 = 256,所以,ASCII碼最多只能表示 256 個符號。
- Unicode碼:也叫做萬國碼,目的是為了解決傳統的字符編碼方案的局限而產生的,它為每種語言中的每個字符設定了統一並且唯一的二進制編碼,規定雖有的字符和符號最少由 16 位來表示(2個字節),即:2 **16 = 65536。
- Utf-8:是對Unicode編碼的壓縮和優化,他不再使用最少使用2個字節,而是將所有的字符和符號進行分類:ascii碼中的內容用1個字節保存、歐洲的字符用2個字節保存,中文字符用3個字節保存。
在python2.x和3.x之間的中文編碼之間有一個區別是:在python2.x系列環境下需要聲明或者指定字符編碼;然而python3.x不需要聲明字符編碼。
- 關於中文編碼如下:
- GB2312:國標碼,誕生於1980年,一共收錄了7000多個漢語字符
- GBK:1995年,一共收錄了20000多個漢語字符
- GB18030:是2000年為了取代GBK1.0而誕生的正式國家標准,同時還收錄了少數民族語言文字
3.3python基礎語法
3.3.1 基本語法注意事項
- 注釋
#!/usr/bin/env python # -*- coding: UTF-8 -*- # 第一個注釋 #號代表單行注釋 '''注釋內容 吧啦吧啦 '''之間插入要注釋的內容(或者也可以使用"""之間插入注釋內容) ''' 注意事項:多行注釋的內容可以按照相應的格式作為變量傳入參數使用
- 變量
什么是變量呢?照字面的意思來說就是可變化的量!尼瑪!!太牽強了,簡單點來說就是:用來指定不同的數據類型,這些變量可以存儲整數,小數或字符;然后再程序中被調用的一片內存空間。
注意事項:
-
- 變量的命名可以使用字符數字和下划線的組合
- 變量名的首字母可以是字母或者下划線,對於特殊字符或者數字還是呵呵吧
- 變量的賦值用=連接
#!/usr/bin/env python # -*- coding: UTF-8 -*- name=wanghui name2=name name=liming print("MY name is",name,name2 "is my friend!!")
對於這個程序,比較好的解釋就如圖所示了:
- 輸入
類似於shell腳本中的read,通過input()來獲取對引得(注意在使用getpass模塊時要用ide打開)
#!/usr/bin/env python # -*- coding:utf-8 -*- import getpass #導入密文模塊(密文顯示密碼用) username = input("name:") #用戶名輸入提示 passwd = getpass.getpass("password:") #密碼提示輸入(密文顯示) print(username,passwd) #打印username和passoword的賦值
- 流程控制
if condition: 所謂的單分支語句
if condition:
else:
if condition: print("heheheh") ##單分支判斷,condition是判斷條件,如果滿足條件就執行print if condition: print("balabala") else: print("heheh") ##雙分支判斷,condition是條件,else是不滿足condition的條件 if condition1: print("hehehe") elif condition2: print("jijij") elif ....: operation else: print("end") ##多分支判斷
下面是一個猜數字判斷游戲:
#!/usr/bin/env python #-*- coding:utf-8 -*- num=20 guess=int(input("please input a number:")) if guess == num: print("it's ok!!") elif guess > num: print("guess smaller please!!") else: print("guess bigger please!!")