Python語言最常用的物件是變數和常量,常量的值是字面意思,其值是不可變的,變數的值是可變的,例如,123,"上海"是常量,而a=1,a=2,其中a是變數名。內建的核心資料型別有:數字、字串、列表、字典、元組、檔案、集合、None和布林型別。變數的資料型別是由初始化的常量來指定的,其型別根據賦值是可變的,這就是Python的動態型別模型。
Python語言的特點是:
Python是強型別的語言,只能對一個物件進行適合該型別的操作。Python是動態型別的,自動檢測到變數的型別。Python語言是大小寫敏感的,變數a和變數A是不同的變數名,'abc' 和'Abc'是不同的字串。一,變數的動態型別在Python中,型別是在執行過程中動態決定的,而不是透過程式碼宣告的,這意味著沒有必要事先宣告變數。
當在Python中執行賦值語句:a = 3 時,Python自動把a作為整數物件來使用。變數名不和型別關聯,變數名只不過是物件的一個引用而已,資料型別是和物件相關聯的。當變量出現在表示式中時,它會馬上被當前引用的物件所代替。
總之,變數在賦值的時候建立,可以引用任何資料型別的物件,並且必須在初始化之後才能引用。
二,數字型別Python的數字型別包括:整數、浮點數和複數
整數:在Python3.0中支援無窮精度的整數,可以透過內建函式int(n)來建立整數,整數是精確的,浮點數:類似於C語言中的雙精度,可以透過內建函式float(n)來建立浮點數,浮點數可能存在誤差,複數:虛部以j或J結尾,可以透過內建函式complex(real,image)來建立複數二進位制,八進位制和十六進位制:可以透過內建函式bin(n),oct(n),hex(n)來分別建立二進位制數,八進位制數和十六進位制數1,基數為2,8和16的整數
二進位制,八進位制和十六進位制只能表示整數:
二進位制(binary):以0b或0B開頭,後面接0-1的數字八進位制(octal):以0o或0O開頭,後面接0-7的數字,十六進位制(hex ):以0x或0X開頭,後面接十六進位制的數字0-9和A-F,字元編寫成大寫或小寫都行各個進位制的常量表示:
常量0o10 是指十進位制的8,使用oct(8)來表示常量0b10是指十進位制的2,使用bin(2)來表示常量ox10是指十進位制的16,使用hex(16)來表示2,除法
Floor除法是指:把結果向小舍入到最近的整數,例如,小於2.5最小的整數是2,小於-2.5最小的整數是-3
>>> import math>>> math.floor(2.5)2>>> math.floor(-2.5)-3
在Python 2.6 版本中:
/ 表示傳統除法:如果兩個運算元都是整數型別,執行截斷的整數除法,返回的結果是整數;如果任意一個運算元是浮點數,則返回小數。
// 表示Floor除法:總是截斷餘數,當兩個運算元都是整數時,結果是整數(n);如果有任何一個運算元是浮點型別,則返回一個浮點數(n.0)。
在Python 3.0 版本中:
/ 表示真除法:不管運算元的型別,都返回包含小數的結果;
// 表示Floor除法:對於整數執行截斷除法,對於浮點數執行浮點除法。
例如,在Python 3.0 版本中:
>>> 5//2.02.0>>> 5//-2.0-3.0
3,位操作
把整數當作二進位制位串來對待,使用位運算子進行位移操作
>>> x=1 #0b0001>>> x<<24>>> x|23>>> x&11
4,內建的數學工具
匯入內建的math模組,常用的數學工具:
pow(a,b),求a的b次冪round(seed):求隨機數math.sqrt(x),求x的平方根math.floor(x):向下取最小的整數math.trunc(x):截斷小數點,保留整數5,精確小數
精確小數是有固定精度的浮點數,通常情況下,浮點數缺乏精確性,這是因為用來儲存數值的空間有限,例如,下面的計算應該得到0,但是結果卻沒有等於0,而是結果接近於0:
>>> 0.1+0.1+0.1-0.35.551115123125783e-17
不過使用精確小數,結果能夠修正:
>>> from decimal import Decimal>>> Decimal('0.1') + Decimal('0.1') - Decimal('0.2')Decimal('0.0')
設定精確小數物件的精度:
decimal.getcontext().prec = 4
6,分數
分數是指帶有分子和分母的表示式,分數 1/2的表示方法是:
>>> from fractions import Fraction>>> x=Fraction(1,2)
7,浮點數和decimal
浮點數和decimal不能直接乘積和相除
unsupported operand type(s) for *: 'float' and 'decimal.Decimal'
浮點數可以透過float(xxx)來轉換,進行型別轉換就行了。
三,布林型別bool資料型別的值是:True和False,顯示的是True和False,其行為跟整數1和0是相同的。
布林型別常用於條件表示式中,用於控制迴圈結構和分支結構。
對於bool值可以進行邏輯運算(and,or,not)。
1,Python的真值規則
數字0、0.0、空字串、空值None、空物件(空的元組,空的集合,空的列表)都是False;其他值都是True2,布林and和or運算子返回物件,而不是值True或False
and 和 or運算子總會返回物件,不是運算子左側的物件,就是右側的物件。
對於or運算子而言,Python會由左至右求操作物件,然後返回第一個為真的操作物件。or運算子是短路計算,Python會在其找到第一個True的運算元就停止。如果沒有遇到True的物件,那麼返回最後一個假的物件。
>>> 1 or []1>>> [] or 11>>> [] or {}{}
對於and運算子而言,Python會由左至右求操作物件,然後返回第一個為假的操作物件。and運算子是短路計算,Python會在其找到第一個False的運算元就停止。如果沒有遇到False的物件,那麼返回最後一個True的物件。
>>> 1 and 2 and 33>>> [] and {}[]>>> 1 and [][]
四,空值
空值是Python裡一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。在真值測試中,表現為False。
五,運算子特殊的運算子
= :賦值== :相等!= :不等is :檢查物件的同一性,如果兩個變數名指向同一個物件,返回True1,邏輯運算子
and :邏輯與or :邏輯或not :邏輯非2,邏輯表示式
>,<,>=,<= :大於,小於,大於或等於,小於或等於==:相等!=:不等3,算術運算子
+ :加- :減* :乘** :冪乘,例如,a**b,是指a的b次方/ :除,在Python3.0中,是真除法,無論任何型別都會保持小數部分// :Floor除法,省略掉結果的小數部分% :求模4,位運算子
& :按位與| :按位或^ :異或5,移位符
<< :向左移位>> :向右移位