Cpython Python的官方版本,使用C語言實現,使用最為廣泛,CPython實現會將源文件(py文件)轉換成位元組碼文件(pyc文件),然後運行在Python虛擬機上。 Jyhton Python的Java實現,Jython會將Python代碼動態編譯成Java位元組碼,然後在JVM上運行。 I ...
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的對應關係和執行流程如下:
PyPy 在Python的基礎上對Python的位元組碼進一步處理,從而提升執行速度!
Python 的環境 |
Windows:
下載地址:https://www.python.org/downloads/
Linux:
自帶python環境
#python -V 查看python版本 nick-suo@ubuntu:~$ python -V Python 2.7.6 nick-suo@ubuntu:~$ python3 -V Python 3.4.0 nick-suo@ubuntu:~$
更新python環境
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 入門 |
一、'Hello World!'
#python2的寫法 print "Hello World!" #python3的寫法 print("Hello World!")
二、解釋器
明確的指出 hello.py 腳本由 python 解釋器來執行。
nick-suo@ubuntu:/blogs$ cat hello.py #!/usr/bin/env python print("Hello World!") nick-suo@ubuntu:/blogs$ sudo chmod +x hello.py nick-suo@ubuntu:/blogs$ ./hello.py Hello World! nick-suo@ubuntu:/blogs$
三、編碼
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解釋器,用什麼編碼來執行代碼:
nick-suo@ubuntu:/blogs$ cat hello.py #!/usr/bin/env python #-*- coding:utf-8 -*- print("你好 世界!") nick-suo@ubuntu:/blogs$ python3 hello.py 你好 世界! nick-suo@ubuntu:/blogs$
四、註釋
單行註釋:#Nick
多行註釋:'''Nick'''
#Nick ''' Nick Nick Nick '''
五、pyc文件
執行Python代碼時,如果導入了其他的 .py 文件,那麼,執行過程中會自動生成一個與其同名的 .pyc 文件,該文件就是Python解釋器編譯之後產生的位元組碼。
nick-suo@ubuntu:/blogs$ ls a.py* a.py a.pyc nick-suo@ubuntu:/blogs$
六、腳步傳入參數
Python有大量的模塊,從而使得開發Python程式非常簡潔。類庫有包括三中:
- Python內部提供的模塊
- 業內開源的模塊
- 程式員自己開發的模塊
Python內部提供一個 sys 的模塊,其中的 sys.argv 用來捕獲執行執行python腳本時傳入的參數
#!/usr/bin/env python #-*- coding:utf-8 -*- import sys print("sys.argv")
七、變數
1、聲明變數
#!/usr/bin/env python #-*- coding:utf-8 -*- #聲明變數name,值為"Nick" name = "Nick"
變數的作用:昵稱其代指記憶體里某個地址中保存的內容
變數定義的規則:
- 變數名只能是 字母、數字或下劃線的任意組合
- 變數名的第一個字元不能是數字
- 以下關鍵字不能聲明為變數名
- ['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、變數的賦值
#!/usr/bin/env python #-*- coding:utf-8 -*- name1 = "Nick" name2 = "Suo"
#!/usr/bin/env python #-*- coding:utf-8 -*- name1 = "Nick" name2 = name1
八、輸入
輸入用戶名
#!/usr/bin/env python #-*- coding:utf-8 -*- #將用戶輸入的內容賦值給name變數 name = raw_input("請輸入用戶名:") print name #python3的寫法 name = input("請輸入用戶名:") print(name)
輸入密碼時,如果想要不可見,需要利用getpass 模塊中的 getpass方法,即:
#!/usr/bin/env python #-*- coding:utf-8 -*- import getpass pwd = getpass.getpass("請輸入密碼:") print(pwd)
九、流程式控制制與縮進
用戶登錄驗證與輸出相應內容
#!/usr/bin/env python #-*- coding:utf-8 -*- import getpass name = input("請輸入用戶名:") pwd = getpass.getpass("請輸入密碼:") if name == "nick" and pwd == "nick": print("Welcome, nick.") elif name == "Suo" and pwd == "Suo": print("Welcome, Suo.") elif name == "test": print("Hi, test.") else: print("Sorry, please try angin.")
十、while迴圈
1、基本迴圈
while 條件:
# 迴圈體
# 如果條件為真,那麼迴圈則執行
# 如果條件為假,那麼迴圈不執行
2、break
break 用於退出當層迴圈
#!/usr/bin/env python #-*- coding:utf-8 -*- num = 1 while num <6: print(num) num+=1 break print("end")
3、continue
continue 用於退出當前迴圈,繼續下一次迴圈
#!/usr/bin/env python #-*- coding:utf-8 -*- num = 1 while num <6: print(num) num+=1 continue print("end")
練習題 |
求1-2+3-4+5 ... 99的所有數的和
方法一:
num = 1 num2 = 2 num3 = num - num2 while True: num+=2 num2+=2 num3 = num3 + num if num == 99: break num3 = num3 - num2 print(num3)
方法二:
sum = 1 s = 0 while True: s = s + sum if sum == 99: break sum+=2 sum1 = 0 s1 = 0 while True: s1 = s1 + sum1 if sum1 == 98: break sum1 += 2 print(s - s1)
方法三:
sum = 0 start = 1 while start < 100: temp = start % 2 if temp == 1: sum = sum +start else: sum = sum - start start += 1 print(sum)
s = "" sum = 0 start = 1 while start < 100: temp = start % 2 if temp == 1: if start == 1: s = str(start) else: s = s + "+" + str(start) sum = sum +start else: s = s + "-" + str(start) sum = sum - start start += 1 print(s) print(sum)
方法四:
sum=1 s=0 while sum<100: s=s+sum*(-1)**(sum+1) sum+=1 print(s)
方法五:
#排除99,剩餘49組1-2 print(49*(1-2)+99)