Python 的基本數(shù)據(jù)類型
1、整數(shù)
Python 可以處理任意大小的整數(shù),當然包括負整數(shù),在 Python 程序中,整數(shù)的表示方法和數(shù)學上的寫法一模一樣,例如:1,100,-8080,0,等等。
計算機由于使用二進制,所以,有時候用十六進制表示整數(shù)比較方便,十六進制用 0x 前綴和 0-9,a-f 表示,例如:0xff00,0xa5b4c3d2,等等。
2、浮點數(shù)
浮點數(shù)也就是小數(shù),之所以稱為浮點數(shù),是因為按照科學記數(shù)法表示時,一個浮點數(shù)的小數(shù)點位置是可變的。整數(shù)和浮點數(shù)在計算機內(nèi)部存儲的方式是不同的,整數(shù)運算永遠是精確的(除法也是精確的),而浮點數(shù)運算則可能會有四舍五入的誤差。
3、字符串
字符串是以 '' 或 "" 括起來的任意文本,比如 'abc' ,"123" 等等。請注意,'' 或 "" 本身只是一種表示方式,不是字符串的一部分,因此,字符串 'abc' 只有 a,b,c 這 3 個字符。這個其他的編程語言也是類似的。
(1) Python 中的字符串和字符串轉(zhuǎn)義
在上面那里提到,字符串可以用 '' 或者 "" 括起來表示??墒怯行r候,我們字符串本身就包含了 '' 或者 "" ,怎么辦呢?
那這個時候就需要對字符串的某些特殊字符進行“轉(zhuǎn)義”,Python 字符串用 進行轉(zhuǎn)義。跟 JAVA 也是一樣的。
常用的轉(zhuǎn)義字符還有:
\n 表示換行 \t 表示一個制表符 \ 表示 \ 字符本身
具體例子:
那上面就有一個問題呢,如果一個字符串包含很多需要轉(zhuǎn)義的字符,對每一個字符都進行轉(zhuǎn)義會很麻煩。這里為了應付這種情況,我們可以在字符串前面加個前綴 r ,表示這是一個 raw 字符串,里面的字符就不需要轉(zhuǎn)義了。
但是,要注意的一點是,但是r'...'表示法不能表示多行字符串,也不能表示包含'和"的字符串。
如果要表示多行字符串,可以用'''...'''表示,當然你也還可以在多行字符串前面添加 r ,把這個多行字符串也變成一個raw字符串
(2) 字符串的編碼問題
我們都知道計算機只能處理數(shù)字,如果要處理文本,就必須先把文本轉(zhuǎn)換為數(shù)字才能處理。最早的計算機在設(shè)計時采用8個比特(bit)作為一個字節(jié)(byte),所以,一個字節(jié)能表示的最大的整數(shù)就是255(二進制11111111=十進制255),0 - 255被用來表示大小寫英文字母、數(shù)字和一些符號,這個編碼表被稱為ASCII編碼,比如大寫字母 A 的編碼是 65,小寫字母 z 的編碼是 122。
如果要表示中文,顯然一個字節(jié)是不夠的,至少需要兩個字節(jié),而且還不能和 ASCII 編碼沖突,所以,中國制定了 GB2312 編碼,用來把中文編進去。
類似的,日文和韓文等其他語言也有這個問題。為了統(tǒng)一所有文字的編碼,Unicode 應運而生。Unicode 把所有語言都統(tǒng)一到一套編碼里,這樣就不會再有亂碼問題了。
Unicode 通常用兩個字節(jié)表示一個字符,原有的英文編碼從單字節(jié)變成雙字節(jié),只需要把高字節(jié)全部填為 0 就可以。
因為 Python 的誕生比 Unicode 標準發(fā)布的時間還要早,所以最早的Python 只支持 ASCII 編碼,普通的字符串 'ABC' 在 Python 內(nèi)部都是 ASCII 編碼的。
Python 在后來添加了對 Unicode 的支持,以 Unicode 表示的字符串用u'...'表示。
不過在最新的 Python 3 版本中,字符串是以 Unicode 編碼的,也就是說,Python 的字符串支持多語言。就像上面的例子一樣,我的代碼中沒有加u'...',也能正常顯示。
不過由于 Python 源代碼也是一個文本文件,所以,當你的源代碼中包含中文的時候,在保存源代碼時,就需要務(wù)必指定保存為 UTF-8 編碼。當Python 解釋器讀取源代碼時,為了讓它按 UTF-8 編碼讀取,我們通常在文件開頭寫上這兩行:
#!/usr/bin/env python3 # -*- coding: utf-8 -*-
第一行注釋是為了告訴 Linux/OS X 系統(tǒng),這是一個 Python 可執(zhí)行程序,Windows 系統(tǒng)會忽略這個注釋;
第二行注釋是為了告訴 Python 解釋器,按照 UTF-8 編碼讀取源代碼,否則,你在源代碼中寫的中文輸出可能會有亂碼。
申明了 UTF-8 編碼并不意味著你的 .py 文件就是 UTF-8 編碼的,必須并且要確保文本編輯器正在使用 UTF-8 without BOM 編碼
4、布爾值
布爾值和布爾代數(shù)的表示完全一致,一個布爾值只有 True 、 False 兩種值,要么是 True,要么是 False,在 Python 中,可以直接用 True、False 表示布爾值(請注意大小寫),也可以通過布爾運算計算出來。
布爾值可以用 and、or 和 not 運算。
and 運算是與運算,只有所有都為 True,and 運算結(jié)果才是 True。
or 運算是或運算,只要其中有一個為 True,or 運算結(jié)果就是 True。
not 運算是非運算,它是一個單目運算符,把 True 變成 False,F(xiàn)alse 變成 True。
5、空值
基本上每種編程語言都有自己的特殊值——空值,在 Python 中,用 None 來表示