《Python基礎篇》之初識Python一
python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的指令碼解釋程式,作為ABC語言的一種繼承。
Python和其他語言的對比:
C 和 Python、Java、C#等
C語言: 程式碼編譯得到 機器碼 ,機器碼在處理器上直接執行,每一條指令控制CPU工作
其他語言: 程式碼編譯得到 位元組碼 ,虛擬機器執行位元組碼並轉換成機器碼再後在處理器上執行
Python 和 C Python這門語言是由C開發而來
對於使用:Python的類庫齊全並且使用簡潔,如果要實現同樣的功能,Python 10行程式碼可以解決,C可能就需要100行甚至更多.
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 ...
安裝Python
windows:1 2 3 4 5 6 7 |
1 、下載安裝包
https: / / www.python.org / downloads /
2 、安裝
預設安裝路徑:C:\python27
3 、配置環境變數
【右鍵計算機】 - - 》【屬性】 - - 》【高階系統設定】 - - 》【高階】 - - 》【環境變數】 - - 》【在第二個內容框中找到 變數名為Path 的一行,雙擊】 - - > 【Python安裝目錄追加到變值值中,用 ; 分割】
如:原來的值;C:\python27,切記前面有分號
|
linux:
1 2 3 |
無需安裝,原裝Python環境
ps:如果自帶 2.6 ,請更新至 2.7
|
更新Python
windows:
1 |
解除安裝重灌即可
|
linux:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
檢視預設Python版本
python - V
1 、安裝gcc,用於編譯Python原始碼
yum install gcc
2 、下載原始碼包,https: / / www.python.org / ftp / python /
3 、解壓並進入原始碼檔案
4 、編譯安裝
. / configure
make all
make install
5 、檢視版本
/ usr / local / bin / python2. 7 - V
6 、修改預設Python版本
mv / usr / bin / python / usr / bin / python2. 6
ln - s / usr / local / bin / python2. 7 / usr / bin / python
7 、防止yum執行異常,修改yum使用的Python版本
vi / usr / bin / yum
將頭部 #!/usr/bin/python 修改為 #!/usr/bin/python2.6
|
Python入門
一、直譯器
如果想要類似於執行shell指令碼一樣執行python指令碼,例:./hello.py
,那麼就需要在 hello.py 檔案的頭部指定直譯器,如下:
1 2 3 |
#!/usr/bin/env python
print "hello,world"
|
ps:執行前需給予 hello.py 執行許可權,chmod 755 hello.py
二、內容編碼
python直譯器在載入 .py 檔案中的程式碼時,會對內容進行編碼(預設ascill)
ASCII(American Standard Code for Information Interchange,美國標準資訊交換程式碼)是基於拉丁字母的一套電腦編碼系統,主要用於顯示現代英語和其他西歐語言,其最多隻能用 8 位來表示(一個位元組),即:2**8 = 256,所以,ASCII碼最多隻能表示 256 個符號。
顯然ASCII碼無法將世界上的各種文字和符號全部表示,所以,就需要新出一種可以代表所有字元和符號的編碼,即:Unicode
Unicode(統一碼、萬國碼、單一碼)是一種在計算機上使用的字元編碼。Unicode 是為了解決傳統的字元編碼方案的侷限而產生的,它為每種語言中的每個字元設定了統一併且唯一的二進位制編碼,規定雖有的字元和符號最少由 16 位來表示(2個位元組),即:2 **16 =65536,
注:此處說的的是最少2個位元組,可能更多
UTF-8,是對Unicode編碼的壓縮和優化,他不再使用最少使用2個位元組,而是將所有的字元和符號進行分類:ascii碼中的內容用1個位元組儲存、歐洲的字元用2個位元組儲存,東亞的字元用3個位元組儲存...
所以,python直譯器在載入 .py 檔案中的程式碼時,會對內容進行編碼(預設ascill),如果是如下程式碼的話:
報錯:ascii碼無法表示中文
1 2 3 |
#!/usr/bin/env python
print "你好,世界"
|
改正:應該顯示的告訴python直譯器,用什麼編碼來執行原始碼,即:
1 2 3 4 |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
print "你好,世界"
|
三、註釋
當行注視:# 被註釋內容
多行註釋:""" 被註釋內容 """
四、執行指令碼傳入引數
Python有大量的模組,從而使得開發Python程式非常簡潔。類庫有包括三中:
- Python內部提供的模組
- 業內開源的模組
- 程式設計師自己開發的模組
Python內部提供一個 sys 的模組,其中的 sys.argv 用來捕獲執行執行python指令碼時傳入的引數
1 2 3 4 5 6 |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import sys
print sys.argv
|
五、 pyc 檔案
執行Python程式碼時,如果匯入了其他的 .py 檔案,那麼,執行過程中會自動生成一個與其同名的 .pyc 檔案,該檔案就是Python直譯器編譯之後產生的位元組碼。
ps:程式碼經過編譯可以產生位元組碼;位元組碼通過反編譯也可以得到程式碼。
六、變數
1、宣告變數
1 2 3 4 |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name = "zhangyanlin"
|
上述程式碼聲明瞭一個變數,變數名為: name,變數name的值為:"zhangyanlin"
變數定義的規則:
- 變數名只能是 字母、數字或下劃線的任意組合
- 變數名的第一個字元不能是數字
- 以下關鍵字不能宣告為變數名
['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']
七、輸入
1 2 3 4 5 6 7 8 |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 將使用者輸入的內容賦值給 name 變數
name = raw_input ( "請輸入使用者名稱:" )
# 列印輸入的內容
print name
|
輸入密碼時,如果想要不可見,需要利用getpass 模組中的 getpass方法,即:
1 2 3 4 5 6 7 8 9 10 |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import getpass
# 將使用者輸入的內容賦值給 name 變數
pwd = getpass.getpass( "請輸入密碼:" )
# 列印輸入的內容
print pwd
|
八、流程控制和縮排
需求一、使用者登陸驗證
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
#!/usr/bin/env python
# -*- coding: encoding -*-
# 提示輸入使用者名稱和密碼
# 驗證使用者名稱和密碼
# 如果錯誤,則輸出使用者名稱或密碼錯誤
# 如果成功,則輸出 歡迎,XXX!
import getpass
name = raw_input ( '請輸入使用者名稱:' )
pwd = getpass.getpass( '請輸入密碼:' )
if name = = "zhangyanlin" and pwd = = "123456" :
print "歡迎,zhangyanlin!"
else :
print "使用者名稱和密碼錯誤"
|
九、while迴圈
1、基本迴圈
1 2 3 4 5 6 |
while 條件:
# 迴圈體
# 如果條件為真,那麼迴圈體則執行
# 如果條件為假,那麼迴圈體不執行
|
2、break
break用於退出所有迴圈
1 2 3 4 |
while True :
print 123
break
|
3、continue
continue用於退出當前迴圈,繼續下一次迴圈
1 2 3 4 |
while True :
print 123
continue
|
4.#列出100之內所有的奇數
1 2 3 4 5 |
odd = 1
while odd < = 100 :
print (odd)
odd + = 2
|
5.#列出100之內所有的偶數
1 2 3 4 5 |
even = 0
while even < = 100 :
print (even)
even + = 2
|
6.算出1-2+3-4....+99的和
1 2 3 |
#排除99剩餘49組1減2
u1 = 49
print (u1 * ( 1 - 2 ) + 99 )
|
or
1 2 3 4 5 6 7 8 9 10 11 |
#列出1-99所有數的和
start = 1
sum = 0
while start < 100 :
temp = start % 2
if temp = = 1 :
sum = sum + start
else
sum = sum - start
start + = 1
print ( sum )
|