python基礎學習(一)--資料型別
Python一個 高階語言
2017-09-19
1.1 Python背景簡介(感謝偉大的廖雪峰大佬帶我們走上一條光頭路,嘿嘿)
寫了大半年Python程式碼,感覺收穫不是很大,都是現學現賣,沒有系統的瞭解過這個語言究竟是什麼樣的,從頭學一遍
提升一下。
Python的來源
Python是著名的“龜叔”Guido van Rossum在1989年聖誕節期間,為了打發無聊的聖誕節而編寫的一個程式語言。
Python適用物件
c語言與Python對比:
c比較適合編寫操縱系統等追求記憶體使用,能充分發揮硬體效能要要求高的程式;
Python 適合編寫應用程式,web,爬蟲,sdn等敏捷開發的需求(例如YouTube、Instagram,還有國內的豆瓣。很多大公司,
包括Google、Yahoo等,甚至NASA(美國航空航天局)都大量地使用Python。);
python的缺點
(一)、Python是解釋性語言,執行之前需要cpu進行解釋執行,c和Java在編譯後直接執行機器碼就好;
(二)、Python發版不能加密,這也是由於它是解釋性語言
Python直譯器: 官方直譯器->cpython 在安裝Python後就擁有cpython直譯器,它由c編寫完成,在命令列輸入Python後就調
用cpython直譯器,我們所有程式碼豆油cPython解釋執行;Python直譯器分為多種,我們用到的基本都是cpython。
1.2 Python中的變數:
Python是動態語言,可以將任意資料型別值賦給變數,可多次賦值
1.2.1 記憶體機制:
建立一個變數
a=1
Python直譯器將在 : 1、記憶體中建立一個名為a的變數,
2、記憶體中建立一個變數 1 。
3、將a指向1
也可以把一個變數a
賦值給另一個變數b
,這個操作實際上是把變數b
指向變數a
所指向的資料,例如下面的程式碼:
a = 'ABC' b = a a = 'XYZ' print(b)
最後一行打印出變數b
的內容到底是'ABC'
呢還是'XYZ'
?如果從數學意義上理解,就會錯誤地得出b
和a
相同,也應該是'XYZ'
,但實際上b
的值是'ABC'
,讓我們一行一行地執行程式碼,就可以看到到底發生了什麼事:
執行a = 'ABC'
,直譯器建立了字串'ABC'
和變數a
,並把a
指向'ABC'
:
執行b = a
,直譯器建立了變數b
,並把b
指向a
指向的字串'ABC'
:
執行a = 'XYZ'
,直譯器建立了字串'XYZ',並把a
的指向改為'XYZ'
,但b
並沒有更改:
所以,最後列印變數b
的結果自然是'ABC'
了。
Python支援多種資料型別,在計算機內部,可以把任何資料都看成一個“物件”,而變數就是在程式中用來指向這些資料物件的,對變數賦值就是把資料和變數給關聯起來。
Python有五個標準的資料型別:
- Numbers(數字)
- String(字串)
- List(列表)
- Tuple(元組)
- Dictionary(字典)
其中屬於集合型別的資料型別有 列表、元組及字典。
2.1 Python字串
在Python3中,字串以Unicode為編碼格式,所以Python支援多語言。
對於單個字元的編碼,Python提供了ord()
函式獲取字元的整數表示,chr()
函式把編碼轉換為對應的字元:
>>> ord('A') 65 >>> ord('中') 20013 >>> chr(66) 'B' >>> chr(25991) '文'
3、python 中的拷貝
引用和copy(),deepcopy()的區別
import copy a = [1, 2, 3, 4, ['a', 'b']] #原始物件 b = a #賦值,傳物件的引用 c = copy.copy(a) #物件拷貝,淺拷貝 d = copy.deepcopy(a) #物件拷貝,深拷貝 a.append(5) #修改物件a a[4].append('c') #修改物件a中的['a', 'b']陣列物件 print 'a = ', a print 'b = ', b print 'c = ', c print 'd = ', d 輸出結果: a = [1, 2, 3, 4, ['a', 'b', 'c'], 5] b = [1, 2, 3, 4, ['a', 'b', 'c'], 5] c = [1, 2, 3, 4, ['a', 'b', 'c']] d = [1, 2, 3, 4, ['a', 'b']]
4、Python的is 和 ==的區別
is 比較記憶體地址 == 比較值