pyton全棧開發從入門到放棄之數據類型與變量
阿新 • • 發佈:2017-07-18
映射類 分隔 無法 列表常用操作 可用 內置 鏈式 無需 上一個
一.變量
1 什麽是變量之聲明變量
#變量名=變量值 age=18 gender1=‘male‘ gender2=‘female‘
2 為什麽要有變量
變量作用:“變”=>變化,“量”=>計量/保存狀態
程序的運行本質是一系列狀態的變化,變量的目的就是用來保存狀態,變量值的變化就構成了程序運行的不同結果。
例如:CS槍戰,一個人的生命可以表示為life=active表示存活,當滿足某種條件後修改變量life=inactive表示死亡。
3 變量值之類型與對象
程序中需要處理的狀態很多,於是有了不同類型的變量值,x=‘egon‘,變量值‘egon‘存放與內存中,綁定一個名字x,變量值即我們要存儲的數據。
在python中所有數據都是圍繞對象這個概念來構建的,對象包含一些基本的數據類型:數字,字符串,列表,元組,字典等
程序中存儲的所有數據都是對象,
一個對象(如a=1)有:
一個身份(id)
一個類型(type)
一個值(通過變量名a來查看)
1 對象的類型也稱為對象的類別,python為每個類型都定制了屬於該類型特有的方法,極大地方便了開發者對數據的處理
2 創建某個特定類型的對象也稱為創建了該類型的一個實例,工廠函數的概念來源於此
4 可變對象與不可變對象
實例被創建後,身份和類型是不可變的,
如果值是不可以被修改的,則是不可變對象
如果值是可以被修改的,則是可變對象
5 容器對象
某個對象包含對其他對象的引用,則稱為容器或集合
6 對象的屬性和方法
屬性就是對象的值,方法就是調用時將在對象本身上執行某些操作的函數,使用.運算符可以訪問對象的屬性和方法,如
a=3+4j
a.real
b=[1,2,3]
b.append(4)
7 身份比較,類型比較,值比較
x=1
y=1
x is y #x與y是同一個對象,is比較的是id,即身份
type(x) is type(y) #對象的類型本身也是一個對象,所以可以用is比較兩個對象的類型的身份
x == y #==比較的是兩個對象的值是否相等
7 變量的命名規範
- 變量命名規則遵循標識符命名規則,詳見第二篇
8 變量的賦值操作
- 與c語言的區別在於變量賦值操作無返回值
- 鏈式賦值:y=x=a=1
- 多元賦值:x,y=1,2 x,y=y,x
- 增量賦值:x+=1
二.數據類型
回到頂部2.1 什麽是數據類型及數據類型分類
程序的本質就是驅使計算機去處理各種狀態的變化,這些狀態分為很多種
例如英雄聯盟遊戲,一個人物角色有名字,錢,等級,裝備等特性,大家第一時間會想到這麽表示
名字:德瑪西亞------------>字符串
錢:10000 ------------>數字
等級:15 ------------>數字
裝備:鞋子,日炎鬥篷,蘭頓之兆---->列表
(記錄這些人物特性的是變量,這些特性的真實存在則是變量的值,存不同的特性需要用不同類型的值)
python中的數據類型
python使用對象模型來存儲數據,每一個數據類型都有一個內置的類,每新建一個數據,實際就是在初始化生成一個對象,即所有數據都是對象
對象三個特性
- 身份:內存地址,可以用id()獲取
- 類型:決定了該對象可以保存什麽類型值,可執行何種操作,需遵循什麽規則,可用type()獲取
- 值:對象保存的真實數據
註:我們在定義數據類型,只需這樣:x=1,內部生成1這一內存對象會自動觸發,我們無需關心
這裏的字符串、數字、列表等都是數據類型(用來描述某種狀態或者特性)除此之外還有很多其他數據,處理不同的數據就需要定義不同的數據類型
標準類型 | 其他類型 |
數字 | 類型type |
字符串 | Null |
列表 | 文件 |
元組 | 集合 |
字典 | 函數/方法 |
類 | |
模塊 |
回到頂部
2.2 標準數據類型:
回到頂部2.2.1 數字
定義:a=1
特性:
1.只能存放一個值
2.一經定義,不可更改
3.直接訪問
分類:整型,長整型,布爾,浮點,復數
回到頂部2.2.1.1 整型:
Python的整型相當於C中的long型,Python中的整數可以用十進制,八進制,十六進制表示。
>>> 10 10 --------->默認十進制 >>> oct(10) ‘012‘ --------->八進制表示整數時,數值前面要加上一個前綴“0” >>> hex(10) ‘0xa‘ --------->十六進制表示整數時,數字前面要加上前綴0X或0x
python2.*與python3.*關於整型的區別
python2.*
在32位機器上,整數的位數為32位,取值範圍為-2**31~2**31-1,即-2147483648~2147483647
在64位系統上,整數的位數為64位,取值範圍為-2**63~2**63-1,即-9223372036854775808~9223372036854775807
python3.*整形長度無限制
整型工廠函數int()
python2.7 python3.5 回到頂部2.2.1.2 長整型long:
python2.*:查看 回到頂部
跟C語言不同,Python的長整型沒有指定位寬,也就是說Python沒有限制長整型數值的大小,
但是實際上由於機器內存有限,所以我們使用的長整型數值不可能無限大。
在使用過程中,我們如何區分長整型和整型數值呢?
通常的做法是在數字尾部加上一個大寫字母L或小寫字母l以表示該整數是長整型的,例如:
a = 9223372036854775808L
註意,自從Python2起,如果發生溢出,Python會自動將整型數據轉換為長整型,
所以如今在長整型數據後面不加字母L也不會導致嚴重後果了。
python3.*
長整型,整型統一歸為整型
2.2.1.3 布爾bool:
True 和False回到頂部
1和0
2.2.1.4 浮點數float:
Python的浮點數就是數學中的小數,類似C語言中的double。回到頂部
在運算中,整數與浮點數運算的結果是浮點數
浮點數也就是小數,之所以稱為浮點數,是因為按照科學記數法表示時,
一個浮點數的小數點位置是可變的,比如,1.23*109和12.3*108是相等的。
浮點數可以用數學寫法,如1.23,3.14,-9.01,等等。但是對於很大或很小的浮點數,
就必須用科學計數法表示,把10用e替代,1.23*109就是1.23e9,或者12.3e8,0.000012
可以寫成1.2e-5,等等。
整數和浮點數在計算機內部存儲的方式是不同的,整數運算永遠是精確的而浮點數運算則可能會有
四舍五入的誤差。
2.2.1.5 復數complex:
復數由實數部分和虛數部分組成,一般形式為x+yj,其中的x是復數的實數部分,y是復數的虛數部分,這裏的x和y都是實數。
註意,虛數部分的字母j大小寫都可以,
>>> 1.3 + 2.5j == 1.3 + 2.5J True回到頂部
2.2.1.6 數字相關內建函數
回到頂部2.2.2 字符串
定義:它是一個有序的字符的集合,用於存儲和表示基本的文本信息,‘’或“”或‘’‘ ’‘’中間包含的內容稱之為字符串回到頂部
特性:
1.只能存放一個值
2.不可變
3.按照從左到右的順序定義字符集合,下標從0開始順序訪問,有序
補充:
1.字符串的單引號和雙引號都無法取消特殊字符的含義,如果想讓引號內所有字符均取消特殊意義,在引號前面加r,如name=r‘l\thf‘
2.unicode字符串與r連用必需在r前面,如name=ur‘l\thf‘
2.2.2.1 字符串創建
‘hello world’
回到頂部2.2.2.2 字符串常用操作
移除空白回到頂部
分割
長度
索引
切片
2.2.2.3 字符工廠函數str()
字符串工廠函數 python中str函數isdigit、isdecimal、isnumeric的區別 回到頂部2.2.3 列表
定義:[]內以逗號分隔,按照索引,存放各種數據類型,每個位置代表一個元素回到頂部
特性:
1.可存放多個值
2.可修改指定索引位置對應的值,可變
3.按照從左到右的順序定義列表元素,下標從0開始順序訪問,有序
2.2.3.1 列表創建
list_test=[’lhf‘,12,‘ok‘]回到頂部
或
list_test=list(‘abc‘)
或
list_test=list([’lhf‘,12,‘ok‘])
2.2.3.2 列表常用操作
索引回到頂部
切片
追加
刪除
長度
切片
循環
包含
2.2.3.3 列表工廠函數list()
查看回到頂部
2.2.4 元組
定義:與列表類似,只不過[]改成()
特性:
1.可存放多個值回到頂部
2.不可變
3.按照從左到右的順序定義元組元素,下標從0開始順序訪問,有序
2.2.4.1 元組創建
ages = (11, 22, 33, 44, 55)回到頂部
或
ages = tuple((11, 22, 33, 44, 55))
2.2.4.2 元組常用操作
索引回到頂部
切片
循環
長度
包含
2.2.4.3 元組工廠函數tuple()
回到頂部2.2.5 字典
定義:{key1:value1,key2:value2},key-value結構,key必須可hash
特性:
1.可存放多個值回到頂部
2.可修改指定key對應的值,可變
3.無序
2.2.5.1 字典創建
person = {"name": "sb", ‘age‘: 18}
或
person = dict(name=‘sb‘, age=18)
person = dict({"name": "sb", ‘age‘: 18})
person = dict(([‘name‘,‘sb‘],[‘age‘,18]))
{}.fromkeys(seq,100) #不指定100默認為None
註意:
>>> dic={}.fromkeys([‘k1‘,‘k2‘],[]) >>> dic {‘k1‘: [], ‘k2‘: []} >>> dic[‘k1‘].append(1) >>> dic {‘k1‘: [1], ‘k2‘: [1]}回到頂部
2.2.5.2 字典常用操作
索引回到頂部
新增
刪除
鍵、值、鍵值對
循環
長度
2.2.5.3 字典工廠函數dict()
回到頂部2.2.6 集合
定義:由不同元素組成的集合,集合中是一組無序排列的可hash值,可以作為字典的key回到頂部
特性:
1.集合的目的是將不同的值存放到一起,不同的集合間用來做關系運算,無需糾結於集合中單個值
2.2.6.1 集合創建
{1,2,3,1}回到頂部
或
定義可變集合set
>>> set_test=set(‘hello‘)
>>> set_test
{‘l‘, ‘o‘, ‘e‘, ‘h‘}
改為不可變集合frozenset
>>> f_set_test=frozenset(set_test)
>>> f_set_test
frozenset({‘l‘, ‘e‘, ‘h‘, ‘o‘})
2.2.6.2 集合常用操作:關系運算
in回到頂部
not in
==
!=
<,<=
>,>=
|,|=:合集
&.&=:交集
-,-=:差集
^,^=:對稱差分
2.2.6.3 集合工廠函數set()
查看回到頂部
2.2.7 bytes類型
定義:存8bit整數,數據基於網絡傳輸或內存變量存儲到硬盤時需要轉成bytes類型,字符串前置b代表為bytes類型
>>> x ‘hello sb‘ >>> x.encode(‘gb2312‘) b‘hello sb‘回到頂部
2.2.8 數據類型轉換內置函數匯總
註:真對acsii表unichr在python2.7中比chr的範圍更大,python3.*中chr內置了unichar
回到頂部三.運算符
1、算數運算:
2、比較運算:
3、賦值運算:
4、位運算:
註: ~ 舉例: ~5 = -6 解釋: 將二進制數+1之後乘以-1,即~x = -(x+1),-(101 + 1) = -110
按位反轉僅能用在數字前面。所以寫成 3+~5 可以得到結果-3,寫成3~5就出錯了
5、邏輯運算:
and註解:
- 在Python 中,and 和 or 執行布爾邏輯演算,如你所期待的一樣,但是它們並不返回布爾值;而是,返回它們實際進行比較的值之一。
- 在布爾上下文中從左到右演算表達式的值,如果布爾上下文中的所有值都為真,那麽 and 返回最後一個值。
- 如果布爾上下文中的某個值為假,則 and 返回第一個假值
or註解:
- 使用 or 時,在布爾上下文中從左到右演算值,就像 and 一樣。如果有一個值為真,or 立刻返回該值
- 如果所有的值都為假,or 返回最後一個假值
- 註意 or 在布爾上下文中會一直進行表達式演算直到找到第一個真值,然後就會忽略剩余的比較值
and-or結合使用:
- 結合了前面的兩種語法,推理即可。
- 為加強程序可讀性,最好與括號連用,例如:
(1 and ‘x‘) or ‘y‘
6、成員運算:
7.身份運算
8.運算符優先級:自上而下,優先級從高到低
回到頂部四.標準數據類型特性總結
按存值個數區分
標量/原子類型 | 數字,字符串 |
容器類型 | 列表,元組,字典 |
按可變不可變區分
可變 | 列表,字典 |
不可變 | 數字,字符串,元組 |
按訪問順序區分
直接訪問 | 數字 |
順序訪問(序列類型) | 字符串,列表,元組 |
key值訪問(映射類型) | 字典 |
可變數據類型:在Id不變的情況下,value可以改變
num=10 列表
id 字典
type
value
不可變數據類型:value改變,id也跟著改變
數字
字符串
布爾
補充:
True===>1
false==>0
pyton全棧開發從入門到放棄之數據類型與變量