Python是一門面向對象的解釋性語言(腳本語言),這一類語言的特點就是不用編譯,程序在運行的過程中由對應的解釋器向CPU進行編譯,一邊編譯一邊執行他屬於腳本語言,不想編譯型語言那樣先將程序編譯成二進位在運行。
1)程序塊不是以「{」和「}」括起來來定義的,而是依據程序的縮進來表示程序的塊和代碼的層次
2)程序以一個邏輯行尾單位進行執行,一個邏輯行可以由多個物理行組成(通過\來連接下一行),一個物理行可以分成多個邏輯行(通過「;」來分隔同一物理行的多個邏輯行。但是一般不建議使用「;」來分隔邏輯行,建議使用換行和縮進來組織程序結構)
3)程序中沒有類似main函數的主程序,一個文件中的所有內容(代碼)按照行從上到下從左到右執行。在文件中有函數,函數定義部分等到調用才執行。
4)變量在定義時沒有類型,在運行期間才去確定數據類型。變量沒有固定類型,前一次賦值的時候是什麼類型就是什麼類型,而且是可以動態變動的。
5)函數定義中沒有返回值及返回值類型的說明,只有函數名和參數列表(參數也沒有類型,同一函數在同一程序中可接收不同類型的參數)。如果沒有返回值則默認返回NONE,如果有顯示的return語句,則返回被return的值。(在同一函數,多個return可以返回不同類型的或不返回)
6)常用的函數 a. raw_input(str)函數:接收用戶從控制台輸入的數據,返回一個字符串。參數str是提示語句。 b. int(str)等函數:將字符串轉換成int類型,可以配合raw_input(str)函數使用,從用戶輸入獲取int數據。 c. len(obj)函數:獲取列表、元組、字典等的長度,返回長度的值 d. print 函數:列印內容到控制台,可以是數值、字符串、序列等各種類型。列印完後默認是自動換行,如果後面接「,」則不換行。可以格式化字符串,使用%d(%o、%x)、%f、%s等,
7)Python的關鍵字
8)Python的數據類型
控制語句
控制語句分別有表示選擇的if語句(if、else、elif),注意沒有switch case語句;有表示循環的while語句,while末尾也有else的可選項,但是沒有do while語句;還有表示循環的for語句,for末尾也有else的可選項,但是for語句是for var in list類型的語句,而不是像C語言的三段式;在for和while語句中還有break語句和continue語句,意義和其他語言中一樣。注意在Python中沒有使用大括號表示語句塊的方法,而是通過縮進來表示的。具體的控制語句總結如下。
1)if條件判斷語句:if、elif、else後面要跟冒號,其中elif和else部分是可選的。
2)while循環語句:注意while後面跟冒號,else部分可選
3)for循環語句:else部分可選
函數
函數定義沒有返回值的說明,但是可以使用return語句返回一個值,如果在函數中有多個return語句,那麼返回值類型可以不同,如果沒有return語句,默認是返回None。函數的參數列表也只有形參名稱,而沒有形參的類型,具體的類型根據運行時動態確定,在同一程序中,可以給同一函數傳遞不同類型的參數來調用這個函數。注意函數定義時後面跟「:」。函數調用的形式為functionname(arg1, arg2, ……,argn)。 默認參數:在函數定義時指定參數的值,則在調用時,這些參數的值可以不給定,而直接根據定義時給定的值默認。如def say(message, times = 1):,那麼在調用時可以直接say(「hello」)或say(「hello」,5)。如果沒有指定times的值的話就將該值默認為1。默認參數必須在非默認參數之後,由於調用時參數個數不確定,因此按照順序依次給各參數賦值,沒有被賦值的後面的默認參數就被賦值為默認值。 只有在形參表末尾的那些參數可以有默認參數值,即你不能在聲明函數形參的時候,先聲明有默認值的形參而後聲明沒有默認值的形參。這是因為賦給形參的值是根據位置而賦值的。例如,def func(a, b=5)是有效的,但是def func(a=5, b)是無效的。
模塊
使用模塊時引用模塊就行了,通過語句import或from …… import……。如果你想要輸入所有sys模塊使用的名字,那麼你可以使用from sys import *語句。比如有一個模塊被寫在mou.py中,在程序testmou.py中要用模塊,你需要通過「import mou」語句導入模塊,注意「.py」不用寫。假如mou.py中定義了一個變量和一個函數分別叫var和fun(),通過上面的import語句導入模塊mou之後你可以通過語句「mou.var」和「mou.fun()」來調用其中的變量和函數。如果你想導入mou中的所有變量和函數,則可以使用「from mou import *」來導入,這樣導入的方式使得使用時就不需要模塊名來引用變量和函數,直接使用。如果你只想導入mou中的fun()函數,則可以使用「frommou import fun」語句來導入,使用時就不需要模塊名了,直接使用fun()函數。 Python中有許多標準庫模塊,是語言自帶的一些模塊,也可以自定義自己的模塊。 標準庫模塊常用的有sys、os、re、time等。自定義時就和平常寫python一樣,一個.py結尾的文件就是一個模塊。 注意:導入某模塊時,該模塊的主塊將被運行,無論是導入全部還是導入該模塊的某一個變量或函數。
數據結構
使用模塊時引用模塊就行了,通過語句import或from …… import……。如果你想要輸入所有sys模塊使用的名字,那麼你可以使用from sys import *語句。比如有一個模塊被寫在mou.py中,在程序testmou.py中要用模塊,你需要通過「import mou」語句導入模塊,注意「.py」不用寫。假如mou.py中定義了一個變量和一個函數分別叫var和fun(),通過上面的import語句導入模塊mou之後你可以通過語句「mou.var」和「mou.fun()」來調用其中的變量和函數。如果你想導入mou中的所有變量和函數,則可以使用「from mou import *」來導入,這樣導入的方式使得使用時就不需要模塊名來引用變量和函數,直接使用。如果你只想導入mou中的fun()函數,則可以使用「frommou import fun」語句來導入,使用時就不需要模塊名了,直接使用fun()函數。 Python中有許多標準庫模塊,是語言自帶的一些模塊,也可以自定義自己的模塊。 標準庫模塊常用的有sys、os、re、time等。自定義時就和平常寫python一樣,一個.py結尾的文件就是一個模塊。 注意:導入某模塊時,該模塊的主塊將被運行,無論是導入全部還是導入該模塊的某一個變量或函數。 數據結構 具體的數據類型在3.2.1Python語言概述中有詳細的列舉,其他的也很簡單,和其他語言的數據類型差不多,本節主要介紹一些Python語言特有的一些數據結構。主要的數據結構是列表、元組、字典、序列。下面分別簡單總結一下。
1)列表 特點:列表是可變的,可以刪除、排序、追加(列表中的列表也不會失去它的身
份) 舉例:shoplist =['apple', 'mango', 'carrot', 'banana']
2)元組 特點:元組是不可變的。 元組和列表十分類似,只不過元組和字符串一樣是不可變的,即你不能修改元組。元組通過圓括號中用逗號分割的項目定義。元組通常用在使語句或用戶定義的函數能夠安全地採用一組值的時候,即被使用的元組的值不會改變。 注意元組之內的元組不會失去它的身份。含有0個或1個項目的元組。一個空的元組由一對空的圓括號組成,如myempty = ()。然而,含有單個元素的元組就不那麼簡單了。你必須在第一個(唯一一個)項目後跟一個逗號,如singleton = (2 , )。
3)字典 特點:字典就是類似於map,是以鍵-值對的形式存在的,鍵值對在字典中以這樣的方式標記:d = {key1 : value1, key2 : value2 }。鍵/值對用冒號分割,而各個對用逗號分割,所有這些都包括在花括號中。
4)序列 列表、元組和字符串都是序列,序列的兩個主要特點是索引操作符和切片操作符。索引操作符讓我們可以從序列中抓取一個特定項目。切片操作符讓我
們能夠獲取序列的一個切片,即一部分序列。
以列表為例,一個list定義為:shoplist = ['apple', 'mango', 'carrot', 'banana'] Shoplist [0]為'apple' shoplist[-1]為banana shoplist[0:2] 為['apple','mango'] 索引同樣可以是負數,在那樣的情況下,位置是從序列尾開始計算的。因此,shoplist[-1]表示序列的最後一個元素而shoplist[-2]抓取序列的倒數第二個項目。 切片操作符是序列名後跟一個方括號,方括號中有一對可選的數字,並用冒號分割。注意這與你使用的索引操作符十分相似。記住數是可選的,而冒號是必須的。切片操作符中的第一個數(冒號之前)表示切片開始的位置,第二個數(冒號之後)表示切片到哪裡結束。如果不指定第一個數,Python就從序列首開始。如果沒有指定第二個數,則Python會停止在序列尾。注意,返回的序列從開始位置開始 ,剛好在 結束 位置之前結束。即開始位置是包含在序列切片中的,而結束位置被排斥在切片外