Python全棧開發:初識Python
Pythton簡介
python的創始人為吉多·範羅蘇姆(Guido van Rossum)。1989年的聖誕節期間,吉多·範羅蘇姆為了在阿姆斯特丹打發時間,決心開發一個新的腳本解釋程序,作為ABC語言的一種繼承。
Python(英國發音:/?pa?θ?n/ 美國發音:/?pa?θɑ?n/),是一種面向對象、直譯式的計算機程序語言,具有近二十年的發展歷史。它包含了一組功能完備的標準庫,能夠輕松完成很多常見的任務。它的語法簡單,與其它大多數程序設計語言使用大括號不一樣,它使用縮進來定義語句塊。 與Scheme、Ruby、Perl、Tcl等動態語言一樣,Python具備垃圾回收功能,能夠自動管理內存使用。它經常被當作腳本語言用於處理系統管理任務和網絡程序編寫,然而它也非常適合完成各種高級任務。Python虛擬機本身幾乎可以在所有的作業系統中運行。使用一些諸如py2exe、PyPy、PyInstaller之類的工具可以將Python源代碼轉換成可以脫離Python解釋器運行的程序。 Python的官方解釋器是CPython,該解釋器用C語言編寫,是一個由社區驅動的自由軟件,目前由Python軟件基金會管理。 Python支持命令式程序設計、面向對象程序設計、函數式編程、面向側面的程序設計、泛型編程多種編程範式。
Python可以應用於眾多領域,如:數據分析、組件集成、網絡服務、圖像處理、數值計算和科學計算等眾多領域。目前業內幾乎所有大中型互聯網企業都在使用Python,如:Youtube、Dropbox、BT、Quora(中國知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、騰訊、汽車之家、美團等。互聯網公司廣泛使用Python來做的事一般有:自動化運維、自動化測試、大數據分析、爬蟲、Web 等。
為什麽是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的對應關系和執行流程如下:
PyPy,在Python的基礎上對Python的字節碼進一步處理,從而提升執行速度!
python環境
安裝Python
window: 1、下載安裝包 https://www.python.org/downloads/ 2、安裝 默認安裝路徑:C:\python35 3、配置環境變量 【右鍵計算機】--》【屬性】--》【高級系統設置】--》【高級】--》【環境變量】--》【在第二個內容框中找到 變量名為Path 的一行,雙擊】 --> 【Python安裝目錄追加到變值值中,用 ; 分割】 如:原來的值;C:\python27,切記前面有分號<br>4、在安裝時註意是否為默認安裝
linux:
1
、無需安裝,原裝Python環境
2
、Python27和Python35可以共存
更新Python
windows: 卸載重裝即可 linux: Linux的yum依賴自帶Python,為防止錯誤,此處更新其實就是再安裝一個Python 查看默認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入門
一、第一句Python代碼
在 /home/dev/ 目錄下創建 hello.py 文件,內容如下:
print("hello world")
print("hello world")
執行 hello.py 文件,即: python /home/dev/hello.py
python內部執行過程如下:
二、解釋器
上一步中執行 python /home/dev/hello.py 時,明確的指出 hello.py 腳本由 python 解釋器來執行。
如果想要類似於執行shell腳本一樣執行python腳本,例: ./hello.py
,那麽就需要在 hello.py 文件的頭部指定解釋器,如下:
#!/usr/bin/env python<br> print ("hello,world")
如此一來,執行: ./hello.py
即可。
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碼無法表示中文
#!/usr/bin/env python print ("hello,world")
1 2 |
改正:應該顯示的告訴python解釋器,用什麽編碼來執行源代碼,即:
#!/usr/bin/env python # -*- coding:utf-8 -*-<br> print ("hello,world")
1 #!/usr/bin/env python 2 #-*- coding:utf-8 -*- 3 4 # Python27,解碼要指定原編碼,編碼要指定編成什麽碼 5 6 temp = "李傑" 7 8 temp_unicode = temp.decode("utf-8") 9 10 temp_gbk = temp_unicode.encoding("gbk") 11 12 print(temp_gbk) 13 14 # Python35,gbk和utf-8可以直接轉換 15 16 temp = "李傑" # 為 utf-8 編碼 17 temp_gbk = temp.enoding("utf-8")
#!/usr/bin/env python #-*- coding:utf-8 -*- # Python27,解碼要指定原編碼,編碼要指定編成什麽碼 temp = "李傑" temp_unicode = temp.decode("utf-8") temp_gbk = temp_unicode.encoding("gbk") print(temp_gbk) # Python35,gbk和utf-8可以直接轉換 temp = "李傑" # 為 utf-8 編碼 temp_gbk = temp.enoding("utf-8")
1 2 3 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
四、註釋
當行註視:# 被註釋內容
多行註釋:""" 被註釋內容 """
五、執行腳本傳入參數
Python有大量的模塊,從而使得開發Python程序非常簡潔。類庫有包括三中:
- Python內部提供的模塊
- 業內開源的模塊
- 程序員自己開發的模塊
Python內部提供一個 sys 的模塊,其中的 sys.argv 用來捕獲執行執行python腳本時傳入的參數
1 2 3 4 5 |
#!/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 = "wupeiqi"
|
上述代碼聲明了一個變量,變量名為: name,變量name的值為:"wupeiqi"
變量的作用:昵稱,其代指內存裏某個地址中保存的內容
變量定義的規則:
- 變量名只能是 字母、數字或下劃線的任意組合
- 變量名的第一個字符不能是數字
- 以下關鍵字不能聲明為變量名
[‘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、變量的賦值
1 2 3 4 5 |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name1 = "wupeiqi"
name2 = "alex"
|
1 2 3 4 5 |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
name1 = "wupeiqi"
name2 = name1
|
1 2 3 4 5 6 7 8 |
#!/usr/bin/env python
# -*- coding: utf-8 -*-
# 將用戶輸入的內容賦值給 name 變量
name = 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 = input ( ‘請輸入用戶名:‘ )
pwd = getpass.getpass( ‘請輸入密碼:‘ )
if name = = "alex" and pwd = = "cmd" :
print "歡迎,alex!"
else :
print ("用戶名和密碼錯誤")
|
需求二、根據用戶輸入內容輸出其權限
1 2 3 4 5 6 |
# 根據用戶輸入內容打印其權限
# alex --> 超級管理員
# eric --> 普通管理員
# tony,rain --> 業務主管
# 其他 --> 普通用戶
|
1 2 3 4 5 6 7 8 9 10 11 |
name = input ( ‘請輸入用戶名:‘ )
if name = = "alex" :
print ("超級管理員")
elif name = = "eric" :
print ("普通管理員")
elif name = = "tony" or name = = "rain" :
print ("業務主管")
else :
print ("普通用戶")
|
十、while循環
1、基本循環
1 2 3 4 5 6 |
while 條件:
# 循環體
# 如果條件為真,那麽循環體則執行
# 如果條件為假,那麽循環體不執行
|
2、break
break用於退出所有循環
1 2 3 4 |
while True :
print ("123")
break
print ("456")
|
3、continue
continue用於退出當前循環,繼續下一次循環
1 2 3 4 |
while True :
print ("123")
continue
print ("456")
|
練習題
1、使用while循環輸入 1 2 3 4 5 6 8 9 10
2、求1-100的所有數的和
3、輸出 1-100 內的所有奇數
4、輸出 1-100 內的所有偶數
5、求1-2+3-4+5 ... 99的所有數的和
6、用戶登陸(三次機會重試)
Python全棧開發:初識Python