Python學習筆記_01:基本概念介紹,python_01
目錄
1.Python語言簡介
2.Python中常用資料結構
2.1什麼是列表?
2.2什麼是元組?
2.3什麼是字典?
2.4索引及分區
3.其它基本概念
3.1資料類型和變數
3.2產生器
3.3迭代器
3.4模組
1.Python語言簡介
發展曆史:
Python是由Guido van Rossum在八十年代末和九十年代初,在荷蘭國家數學和電腦科學研究所設計出來的。
Python 本身也是由諸多其他語言發展而來的,這包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的指令碼語言等等。
像Perl語言一樣, Python 原始碼同樣遵循 GPL(GNU General Public License)協議。
現在Python是由一個核心Team Dev在維護,,Guido van Rossum 仍然佔據著至關重要的作用,指導其進展。
特點:
Python是一種解釋型的、物件導向的、帶有動態語義的進階程式設計語言。
完成同一個任務,C語言要寫1000行代碼,Java只需要寫100行,而Python可能只要20行。
功能:
用Python可以做什嗎?可以做日常任務,比如自動備份你的MP3;可以做網站,很多著名的網站包括YouTube就是Python寫的;可以做網路遊戲的後台,很多線上遊戲的後台都是Python開發的。總之就是能幹很多很多事啦。
Python當然也有不能乾的事情,比如寫作業系統,這個只能用C語言寫;寫手機應用,只能用Swift/Objective-C(針對iPhone)和Java(針對Android);寫3D遊戲,最好用C或C++。
適合開發哪些類型應用呢?
首選是網路應用,包括網站、後台服務等等;
其次是許多日常需要的小工具,包括系統管理員需要的指令碼任務等等;
另外就是把其他語言開發的程式再封裝起來,方便使用。
許多大型網站就是用Python開發的,例如YouTube、Instagram,還有國內的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美國航空航天局)都大量地使用Python。
缺點:
第一個缺點就是運行速度慢,和C程式相比非常慢,因為Python是解釋型語言,你的代碼在執行時會一行一行地翻譯成CPU能理解的機器碼,這個翻譯過程非常耗時,所以很慢。而C程式是運行前直接編譯成CPU能執行的機器碼,所以非常快。
第二個缺點就是代碼不能加密。如果要發布你的Python程式,實際上就是發布原始碼,這一點跟C語言不同,C語言不用發布原始碼,只需要把編譯後的機器碼(也就是你在Windows上常見的xxx.exe檔案)發布出去。要從機器碼反推出C代碼是不可能的,所以,凡是編譯型的語言,都沒有這個問題,而解釋型的語言,則必須把源碼發布出去。
2.Python中常用資料結構
2.1什麼是列表?
List(列表) 是 Python 中使用最頻繁的資料類型。
列表可以完成大多數集合類的資料結構實現。它支援字元,數字,字串甚至可以包含列表(所謂嵌套)。
列表用[ ]標識。是python最通用的複合資料型別。看這段代碼就明白。
列表中的值得分割也可以用到變數[頭下標:尾下標],就可以截取相應的列表,從左至右索引預設0開始的,從右至左索引預設-1開始,下標可以為空白表示取到頭或尾。
加號(+)是列表串連運算子,星號(*)是重複操作。如下執行個體:
#!/usr/bin/python # -*- coding: UTF-8 -*- list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tinylist = [123, 'john'] print list # 輸出完整列表 print list[0] # 輸出資料行表的第一個元素 print list[1:3] # 輸出第二個至第三個的元素 print list[2:] # 輸出從第三個開始至列表末尾的所有元素 print tinylist * 2 # 輸出資料行表兩次 print list + tinylist # 列印組合的列表
以上執行個體輸出結果:
['abcd', 786, 2.23, 'john', 70.2] abcd [786, 2.23] [2.23, 'john', 70.2] [123, 'john', 123, 'john'] ['abcd', 786, 2.23, 'john', 70.2, 123, 'john']
2.2什麼是元組?
元組是另一個資料類型,類似於List(列表)。
元組用"()"標識。內部元素用逗號隔開。但是元素不能二次賦值,相當於唯讀列表。
#!/usr/bin/python # -*- coding: UTF-8 -*- tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 ) tinytuple = (123, 'john') print tuple # 輸出完整元組 print tuple[0] # 輸出元組的第一個元素 print tuple[1:3] # 輸出第二個至第三個的元素 print tuple[2:] # 輸出從第三個開始至列表末尾的所有元素 print tinytuple * 2 # 輸出元組兩次 print tuple + tinytuple # 列印組合的元組
以上執行個體輸出結果:
('abcd', 786, 2.23, 'john', 70.2) abcd (786, 2.23) (2.23, 'john', 70.2) (123, 'john', 123, 'john') ('abcd', 786, 2.23, 'john', 70.2, 123, 'john')
以下是元組無效的,因為元組是不允許更新的。而列表是允許更新的:
#!/usr/bin/python # -*- coding: UTF-8 -*- tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 ) list = [ 'abcd', 786 , 2.23, 'john', 70.2 ] tuple[2] = 1000 # 元組中是非法應用 list[2] = 1000 # 列表中是合法應用
2.3什麼是字典?
字典(dictionary)是除列表以外python之中最靈活的內建資料結構類型。列表是有序的對象結合,字典是無序的對象集合。
兩者之間的區別在於:字典當中的元素是通過鍵來存取的,而不是通過位移存取。
字典用"{ }"標識。字典由索引(key)和它對應的值value組成。
#!/usr/bin/python # -*- coding: UTF-8 -*- dict = {} dict['one'] = "This is one" dict[2] = "This is two" tinydict = {'name': 'john','code':6734, 'dept': 'sales'} print dict['one'] # 輸出鍵為'one' 的值 print dict[2] # 輸出鍵為 2 的值 print tinydict # 輸出完整的字典 print tinydict.keys() # 輸出所有鍵 print tinydict.values() # 輸出所有值
2.4索引及分區
索引:列表或者元組中的所有元素都是有編號的——從0開始遞增。這些元素可以通過編號分別訪問,如所示:
>>> greeting = ‘Hello’>>> greeting[0]‘H’
可以通過索引擷取元素。所有列表或者元組可以通過這種方式進行索引。使用負數索引時,就是從列表最後一個元素開始計數,倒數第一為-1,倒數第二個為-2,依次按照負數大小從右往左絕對值大小遞增編號。
分區:與使用索引來訪問單個元素類似,可以使用分區操作來訪問一定範圍內的元素。分區通過冒號隔開的兩個索引來實現:
>>> numbers = [1,2,3,4,5,6,7,8,9,10]>>> numbers[3:6][4,5,6]>>> numbers[0:1][1]
簡而言之,分區操作的實現需要提供兩個索引作為邊界,第1個索引的元素是包含在分區內的,而第2個則不辦含在分區內。
3.其它基本概念
3.1資料類型和變數
資料類型:
在記憶體中儲存的資料可以有多種類型。
例如,person.s年齡作為一個數值儲存和他或她的地址是字母數字字元儲存。
Python有一些標準類型用於定義操作上,他們和為他們每個人的儲存方法可能。
Python有五個標準的資料類型:
Numbers(數字)
String(字串)
List(列表)
Tuple(元組)
Dictionary(字典)
變數:
Python中的變數不需要聲明,變數的賦值操作既是變數聲明和已定義流程。
每個變數在記憶體中建立,都包括變數的標識,名稱和資料這些資訊。
每個變數在使用前都必須賦值,變數賦值以後該變數才會被建立。
等號(=)用來給變數賦值。
等號(=)運算子左邊是一個變數名,等號(=)運算子右邊是儲存在變數中的值。
3.2產生器
通過列表產生式,我們可以直接建立一個列表。但是,受到記憶體限制,列表容量肯定是有限的。而且,建立一個包含100萬個元素的列表,不僅佔用很大的儲存空間,如果我們僅僅需要訪問前面幾個元素,那後面絕大多數元素佔用的空間都白白浪費了。
所以,如果列表元素可以按照某種演算法推算出來,那我們是否可以在迴圈的過程中不斷推算出後續的元素呢?這樣就不必建立完整的list,從而節省大量的空間。在Python中,這種一邊迴圈一邊計算的機制,稱為產生器:generator。
3.3迭代器
可以直接作用於for迴圈的資料類型有以下幾種:
一類是集合資料類型,如list、tuple、dict、set、str等;
一類是generator,包括產生器和帶yield的generator function。
這些可以直接作用於for迴圈的對象統稱為可迭代對象:Iterable。
而產生器不但可以作用於for迴圈,還可以被next()函數不斷調用並返回下一個值,直到最後拋出StopIteration錯誤表示無法繼續返回下一個值了。
可以被next()函數調用並不斷返回下一個值的對象稱為迭代器:Iterator。
產生器都是Iterator對象,但list、dict、str雖然是Iterable(是可迭代對象),卻不是Iterator。
凡是可作用於for迴圈的對象都是Iterable類型;
凡是可作用於next()函數的對象都是Iterator類型,它們表示一個惰性計算的序列;
集合資料類型如list、dict、str等是Iterable但不是Iterator,不過可以通過iter()函數獲得一個Iterator對象。
3.4模組
模組讓你能夠有邏輯地組織你的Python程式碼片段。
把相關的代碼分配到一個 模組裡能讓你的代碼更好用,更易懂。
模組也是Python對象,具有隨機的名字屬性用來綁定或引用。
簡單地說,模組就是一個儲存了Python代碼的檔案。模組能定義函數,類和變數。模組裡也能包含可執行檔代碼。
參考資料:
1.http://www.shouce.ren/api/view/a/4615
2.https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000