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.0 2.0 >>> 5//-2.0 -3.0
3,位操作
把整數當作二進制位串來對待,使用位操作符進行位移操作
>>> x=1 #0b0001 >>> x<<2 4 >>> x|2 3 >>> x&1 1
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.3 5.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)
三,布爾類型
bool數據類型的值是:True和False,顯示的是True和False,其行為跟整數1和0是相同的。
布爾類型常用於條件表達式中,用於控制循環結構和分支結構。
對於bool值可以進行邏輯運算(and,or,not)。
1,Python的真值規則
- 數字0、0.0、空字符串、空值None、空對象(空的元組,空的集合,空的列表)都是False;
- 其他值都是True
2,布爾and和or運算符返回對象,而不是值True或False
and 和 or運算符總會返回對象,不是運算符左側的對象,就是右側的對象。
對於or運算符而言,Python會由左至右求操作對象,然后返回第一個為真的操作對象。or運算符是短路計算,Python會在其找到第一個True的操作數就停止。如果沒有遇到True的對象,那么返回最后一個假的對象。
>>> 1 or [] 1 >>> [] or 1 1 >>> [] or {} {}
對於and運算符而言,Python會由左至右求操作對象,然后返回第一個為假的操作對象。and運算符是短路計算,Python會在其找到第一個False的操作數就停止。如果沒有遇到False的對象,那么返回最后一個True的對象。
>>> 1 and 2 and 3 3 >>> [] and {} [] >>> 1 and [] []
四,空值
空值是Python里一個特殊的值,用None表示。None不能理解為0,因為0是有意義的,而None是一個特殊的空值。在真值測試中,表現為False。
五,操作符
特殊的操作符
- = :賦值
- == :相等
- != :不等
- is :檢查對象的同一性,如果兩個變量名指向同一個對象,返回True
1,邏輯運算符
- and :邏輯與
- or :邏輯或
- not :邏輯非
2,邏輯表達式
- >,<,>=,<= :大於,小於,大於或等於,小於或等於
- ==:相等
- !=:不等
3,算術操作符
- + :加
- - :減
- * :乘
- ** :冪乘,例如,a**b,是指a的b次方
- / :除,在Python3.0中,是真除法,無論任何類型都會保持小數部分
- // :Floor除法,省略掉結果的小數部分
- % :求模
4,位運算符
- & :按位與
- | :按位或
- ^ :異或
5,移位符
- << :向左移位
- >> :向右移位
參考文檔: