一、python執行過程

上圖為一個python代碼的執行流程。首先,源代碼需要以.py結尾,經過編譯器生成一系列的位元組碼,其生成的位元組碼是以.pyc結尾的檔案;之後經過語義解釋器輸入到執行器中執行程式。
一個Python程式可以分解為子產品、語句、表達式和對象四個部分。其中,程式由子產品構成、子產品包含語句、語句包含表達式、表達式建立并處理對象。python是一門面向對象的語言,其主要特點是:以資料為中心,所有處理代碼都圍繞資料結構展開;主要方法是如何設計資料結構,并提供對此資料所允許的操作。而面向過程的特點為:以指令為中心, 由指令處理資料,主要解決的是如何組織代碼解決問題(如C語言)。
二、python的對象引用(變量)
python将所有資料存為記憶體對象,變量就是指記憶體對象的引用。python中的變量是動态類型,即在任何時刻,某個對象的引用都可以重新引用一個不同的對象(可以是不同的資料類型)。
In [32]: a=[1,2,3,4,5]
In [33]: type(a) #此時變量a的類型為清單
Out[33]: list
In [34]: a=(1,2,3,4)
In [35]: type(a) #重新指派後,a的類型變成了元組
Out[35]: tuple
使用内建函數type()可以傳回給定資料的資料類型。"="用于将變量名與記憶體中的某對象綁定。
- 變量的命名規則
隻能包含字母、 數字和下劃線, 且不能以數字開頭; 區分大小寫; 禁止使用保留關鍵字。
- 命名的慣例
以單一下劃線開頭變量名(_x)不會被 from module import 語句導入; 前後有下劃線的變
量名(__x__)是系統定義的變量名, 對 python 解釋器有特殊意義; 以兩個下劃線開頭但是結
尾沒有下劃線的變量名(__x)是類的本地變量; 互動模式下, 變量名”_”用于儲存最後表達式
的結果; 變量名沒有類型, 對象才有。
三、資料類型
資料結構:通過某種方式(例如對元素)進行編号組織在一起的資料元素的集合。
- python常用資料類型
序列類型:
清單:使用[]建立,如:['hello','world','mylinux'] 可變序列
元組:使用()建立,如:('one','tow','three') 不可變序列
字元串:也屬于序列類型 不可變序列
集合類型:集合set、frozenset(不可變集合)
映射類型:字典dict,使用{}建立,如{'a':b}
組合資料類型也是序列, 是以可以嵌套。 清單和元組不是真正存儲資料, 而是存放對象引用;
Python 對象可以具有其被調用的特定方法(函數); 元組、 清單以及字元串等資料結構,其長度可以使用内置函數 len()測量。
- 邏輯操作符:
Python 提供了 4 組邏輯運算
身份操作符:
is:判定左端對象引用是否相同于右端對象引用, 也可以與 NONE 進行
比較操作符:<,>,<=,>=,!=,==
成員操作符:in 或 not in : 測試成員關系
邏輯運算符:and,or,not
四、輸入/輸出
對于輸入輸出,python2.x與python3.x中有所不同。在python2中輸入有兩個函數:input()和raw_input(),而輸出使用的是print語句。raw_input()輸入的是數值,而使用input()輸入時使用的是變量,當輸入變量為定義時會報錯。python2.x中輸出語句的格式:
Print “string %format1 %format2 ...” %(variable1,variable2,...)
格式:%[(name)] [flags] [width] [.precision] typecode
name位于括号中的一個屬于後面的字典的鍵名, 用于選出一個具體項
flag下面标志中的一個或多個
-: 左對齊, 預設右對齊; +:包含數字元号, 整數也會帶"+"; O:表示一個零填充
width指定最小寬度的數字
一個小數點, 用于按照精度分割字段的寬度
precision指定要列印字元串中的最大字元個數, 浮點數中小數點之後的位數,或者整數的最小位數。
>>> raw_input("please input:")
please input:a #輸入值a
'a'
>>> input("please input:")
please input:a #輸入的為變量a,此時a未定義報錯
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'a' is not defined
>>> a='1234' #定義變量a,輸入
>>> input("please input:")
please input:a
'1234' #取得的結果為a所對應的值
在python3.x中使用input()函數作為輸入,輸入為值,print()函數作為輸出。
In [37]: input("please input:") #等同于python2.x中的raw_input()函數
please input:a
Out[37]: 'a'
五、語句和文法
注釋: #, 可以從一行的任何地方開始
續行: \ ‘'': 閉合操作符, 單一語句跨多行
代碼組:縮進相同的一組語句構成的代碼塊;首行以關鍵字開始, 如 if、 while 等, 以冒号結束
Python 使用縮進來分隔代碼組, 同一代碼組的代碼行必須嚴格左右對齊
同一行放置多個語句:以分号作為分隔符
子產品:每一個 python 腳本檔案都可以被當作一個子產品;子產品裡的代碼可以是一端直接執行的腳本, 也可以是一些類似庫函數的代碼進而可由别的子產品執行導入( import)。
六、主程式
主程式:無論目前子產品是被别的子產品導入還是作為腳本直接執行, 都會執行的代碼部分 。
所有子產品都有能力執行代碼:最進階倍的 python 語句(沒有縮進的)在子產品被導入時就會執行;妥當的做法: 除了那些真正需要執行的代碼以外, 所有功能代碼都通過函數建立;是以僅在主程式子產品中編寫大量的頂級可執行代碼; 用于被導入的子產品隻應該存在少量頂級可執行代碼。