天天看點

python基礎知識

一、python執行過程

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 語句(沒有縮進的)在子產品被導入時就會執行;妥當的做法: 除了那些真正需要執行的代碼以外, 所有功能代碼都通過函數建立;是以僅在主程式子產品中編寫大量的頂級可執行代碼; 用于被導入的子產品隻應該存在少量頂級可執行代碼。