【Python】基础速通
目錄
一、變量
◆01 變量
>>2 變量名和關鍵字
>>3?動態類型語言
>>總結
二、數據類型
>>主要內在數據類型:
>>1 數值類型
>>2 列表
>>3 元組
>>4 字符串
>>.轉義字符?
>>5?集合
>>6 字典
>>總結?
三、?類型轉換和輸入
>>1 隱式類型轉換
>>2 顯式類型轉換
>>3 輸入?-- 內置函數input()
四、運算符和表達式
1.應用方法
2.運算符的分類
算術運算符
2.比較運算符
3.邏輯運算符
4.位運算符
相關:計算機中正數和負數的存儲形式:
5.賦值運算符
6.成員運算符: in、not in
7.身份運算符:is、is not
3 運算符的優先級
>>運算符的優先級
>>總結
五、可變對象和不可變對象
1.假如我們對 不可變類型 tuple 元組進行修改會怎樣?
2.下列代碼呢?
3.如果1個變量指向的是1個可修改的對象,那么可以通過這個變量修改它指向的對象,而這個時候并不會創建新對象
>>總結
六、控制語句
1.if條件語句
if....else
if...elif...else
2.循環語句
1.while循環語句
?2.for循環語句
?什么是可迭代對象?
函數range():range(strat,stop[,step])
?3.break語句
4.continue語句
?5.else語句
6.?pass語句?
?總結
一、變量
◆01 變量
>>變量是對象的引用:
- 變量本身并不存儲具體數值,它們僅是對象的引用。可以用賦值運算符=修改變量引用的對象,使變量引用其他對象。
- 不能使用一個未定義的變量(未說明引用哪個對象)。例如: print(va) # va未被定義 將產生NameError(名字錯誤)的語法錯誤:
>>Python中有兩個運算符==和is。
-
前者用于比較對象的值是否相等,后者用于判斷兩個對象是否為同一個。
>>True和False是Python的bool(布爾)類型的兩個值
>>函數type():返回類型
a = 100 b = 100 print(type(a)) print(type(b)) print(a == b, type(a == b)) print(a is b, type(a is b))>>可以用函數id()得到a、b的內存地址。例如:
print(id(a),' ',id(b))上文,a,b都指向同一地址(100),地址相同
>>2 變量名和關鍵字
變量名應該盡量直觀易懂。
-
例如,應使用“PI”而不應用“sdfduzwlf2”來表示圓周率。
-
變量名只能包含字母、數字和下畫線,且不能以數字開頭。同時,變量名不能和已經被Python語言使用的名字(關鍵字)相同。
>>3?動態類型語言
>>在靜態類型語言,如C語言中,定義變量時必須指明其數據類型
>>Python是一個動態類型語言,變量名僅是一個對象的名字,并不是占據一塊內存的那個對象本身,一個變量名可以隨時指向不同的對象,直到程序運行時,才能根據其指向的對象知道該對象的數據類型。
>>總結
二、數據類型
>>主要內在數據類型:
>>1 數值類型
>>可分為int(整型)、float(浮點型)、complex(復數類型)、bool(布爾類型)。
>>只要計算機內存足夠,Python的整型的長度就可以任意長。但浮點型的值小數點后的精度不超過15位,而復數型的值總是寫成x+yi形式。
>>2 列表
>>list是一個數據元素的有序序列,定義列表時用一對左右方括號[ ]包圍,元素之間用逗號隔開。list中的元素可以是不同的類型。
>>因為list是一個有序序列,因此,對于list對象可以用下標運算符[ ]訪問它的一個元素或一系列連續的元素。
>>還可以通過向下標運算符[ ]傳遞起始位置和結束位置的兩個下標,返回連續多個元素組成的子列表(不包含結束位置的元素)
>>list對象是可修改的(mutable)。
>>為指定下標范圍內的元素賦值一個空的list[ ],相當于刪除這個范圍內的元素
>>必須給下標范圍內的元素賦值一個list對象,如果賦值非list對象則會出錯。例如:
li = [2,3.14,8,'python',6,'hello',2] # li[2:5] = [10,22] # 不包括 5 # 上面輸出為:[2, 3.14, 10, 22, 'hello', 2] li[2:5] = 5 print(li)產生TypeError(類型錯誤)
>>3 元組
>>和list一樣,元組(tuple)也是一個有序序列
>>但tuple是不可修改的
>>創建tuple時用圓括號()
>>可以用下標運算符[ ]訪問tuple的元素,但不可以通過下標修改tuple對象,否則產生下列類型錯誤(TypeError)
>>只有一個元素的tuple的最后必須加一個逗號,如(25,)表示一個tuple,而(25)表示一個整數。
>>4 字符串
>>字符串是UniCode字符的有序序列,可以用置于首尾的單引號或雙引號包圍一個字符序列來表示字符串
>>單引號表示的字符串中可以包含雙引號字符,但不能直接包含單引號。雙引號表示的字符串中可以包含單引號,但不能直接包含雙引號
>>str類型的對象是不可修改的(immutable),否則產生“字符串對象不支持賦值”的TypeError(類型錯誤):
>>轉義字符?
>>用\'表示單引號字符,這種前面加反斜杠字符表示字符'的\'稱為“轉義字符”
>>轉義字符\\表示的是單個斜杠字符\
>>轉義字符通常可以表示各種不可見的字符,如控制字符
>>\t表示“制表符”,\n表示“換行符”
>>函數print()在遇到這些字符時會執行特定的動作。例如,對于制表符\t,就輸出固定個數的空格,對于換行符\n就換到新的一行。
>>5 集合
>>set是不包含重復元素的無序集合
>>用左右花括號{ },包圍的,以逗號隔開的一組元素
>>因為集合無序,所以不能用下標操作其中的元素
>>set中不能有相同值的元素。
demo = {1,2,3,4,5,6,7,1,2,3,4,5,6} print(demo)可以看到,重復的元素并沒有輸出
>>集合是根據其元素的哈希值存儲元素的,所以無法計算哈希值的對象不能作為集合的元素。
list對象是無法計算哈希值的,所以不能作為集合的元素,否則產生“list不是可哈希的類型”的TypeError(語法錯誤):
“unhashable”? 不可哈希的類型:’list‘?
>>6 字典
>>dict是一個“鍵-值”對 的無序集合。
>>dict中的每個元素都以“鍵:值(key:value)”的形式存儲
>>需要通過key(鍵,也稱關鍵字)才能訪問dict中key對應的值(value)。
錯誤類型:KeyError?
dic = {'A':65,'B':66,'C':67} print(dic['A']) # 65# 下面兩個鍵值不存在,報錯 ‘KeyError' # print(dic[0]) print(dic['D'])>>總結?
? Python的內在數據類型包括int、float、complex、bool,str,list、tuple、set、dict等。
? list對象是可以修改的,而str和tuple等對象是不可修改的。
? 對于有序序列數據類型,如str、list、tuple,可以通過下標訪問其中的一個或多個元素,而無序的set則不能用下標訪問其中的元素
三、?類型轉換和輸入
>>1 隱式類型轉換
>>Python會自動將一個類型轉為另外一個類型。
例如,在進行整數和浮點數運算時,Python會自動將整數轉為浮點數。同時,兩個整數相除時也會自動轉為浮點數的相除。
>>但是,如果一個數(整數、浮點數等)和一個字符串想加,就不會進行“隱式類型轉換”。
a=100 b = 1.3 print(a+b,type(a+b)) s = '6asdad' print(a+s)將產生“不支持int和str的加法運算”的TypeError(類型錯誤):
>>2 顯式類型轉換
>>內置函數str()將數值類型(int、float、complex)的值轉為字符串str類型
>>內置函數float()既可將一個合適格式的字符串類型的值轉為float類型的值,也可將一個int類型的值轉為float類型的值。
>>內置函數int()既可將一個合適格式的字符串類型的值轉為int類型的值,也可以將一個float類型的值轉為int類型的值(此時,該值小數點后的部分會被截斷)
>>但是,內置函數int()不能將一個不合適格式的字符串轉為int類型的值。
s1='65' s = '1.0000' print(int(s1)) print(int(s))
>>產生“無效的int文字量”的ValueError(值錯誤)
>>3 輸入
>>可以通過內置函數input()從鍵盤輸入數據,
>>函數input()輸入的永遠是一個字符串
總結
?
? 隱式類型轉換:表達式中混合int、float類型的值時,Python會自動將int類型的值轉為float類型的值。
? 顯式類型轉換:可以用內置函數str()將其他類型的值轉為字符串str類型,也可以用內置函數int()或float()將其他類型的值轉為int或float類型。
? 內置函數input()從鍵盤輸入的永遠是一個字符串str類型的值,需要用內置函數int()或float()轉為數值類型才能參與算術計算。
四、運算符和表達式
1.應用方法
- 運算符(operaors)? ?如:+,-,*,/,**(乘方, 比如2**2 即為 2的2次方)
? ? ? ? 不同的運算符具有不同的優先級和結合性
- 運算數:參與運算的數??
注意:不同類型的對象支持的運算符有所不同;注意是否合法?
+? ?對int 來說是加法? ? 對字符串來說是拼接
a = 1 b = 2 print(type(a+b),a+b) # int a = '1' b = '2' print(type(a+b),a+b) # 字符串類型print(type(a*6),a*6) # a重復6遍2.運算符的分類
算術運算符
2.比較運算符
3.邏輯運算符
與或非? 優先級:not>and>or?
- and
- or
- not
4.位運算符
二元位運算符:位與,位或,異或
- &
- |
- ^
一元位運算符:取反,左移,右移
- ~
- <<? 各二進制位全部左移幾位,高位丟棄,低位補零
- >>? ......... 無符號數,高位補零
數字在計算機中是以補碼保存的,所以Python位運算是作用在補碼上
b = 3 # 0011 print(b<<2) # 12計算機中正數和負數的存儲形式:
(1)計算機中的正數用原碼表示;
(2)計算機中的負數用補碼(原碼取反再加一)表示。
?左移右移:位運算符之左移和右移 - 知乎
計算機中數的存儲形式:計算機中數的存儲形式(原碼,反碼,補碼的表示)_不吃貓的魚c的博客-CSDN博客_數字在計算機中的存儲形式
5.賦值運算符
- 簡單的賦值運算符 =? ,給1個對象起了一個名字
- 簡單賦值運算符和算術、位運算結合構成復合賦值運算符
變量x現在引用的是一個新的結果對象而不是原來的2,可以通過輸出x的id來驗證這一點
6.成員運算符: in、not in
>>用于判斷一個值(對象)是否在一個容器對象,如 list、str、tuple 對象中,返回布爾類型。
7.身份運算符:is、is not
>>用于判斷2個變量(標識符)是不是引用的同一個對象。例如:
a = 10 b = 10 print(id(a),' ' ,id(b)) print(a is b) print(a is not b)?上述代碼a,b都為10,要是改成1000呢?
可以看到,a和b 并不是引用的同一個對象了。
?why?
因為在執行時會將小整數駐留在內存中,將小整數賦值給多個變量,它們實際引用的是同一個對象。而將整數賦值給不同變量,這些變量將引用臨時創建的不同對象。
3 運算符的優先級
>>運算符的優先級
-
算術運算符總是“先乘除,后加減”,同樣級別的運算符,如+和-則按照“自左往后的次序”計算
- 同樣是邏輯運算,not比and優先級高,而and比or優先級高。
下表從上到下優先級降低:
無需特地去記憶,因為可以通過加括號來使運算按自己想要的順序來
總結
? 表達式是用運算符對運算數進行運算的式子,運算數包括值或變量,變量實際就是值對象的引用。
? 常見的運算符按照其功能,主要包括算術運算符、邏輯運算符、比較運算符、位運算符。
還有一些其他的運算符,如比較運算符(in和not in)、身份運算符(is和is not)。
? 不同的運算符具有不同的優先級,優先級高的先運算。無須記憶運算符的優先級,因為可以用圓括號保證正確的運算順序。
五、可變對象和不可變對象
- 可變對象:? 可變類型的對象的值是可以被修改的
? ? ? ? list類型、set類型、dict類型等都是可變類型
- 不可變對象:不可變類型的對象的值是不可修改的
? ? ? ? 數值類型、str類型、tuple類型都是不可變類型
1.假如我們對 不可變類型 tuple 元組進行修改會怎樣?
?可見:產生了類型錯誤“TypeError:'tuple'object does not support item assignment”
2.下列代碼呢?
t = (1,2,3) print(t) t = (4,5,6) print(t)輸出:
(1, 2, 3)
(4, 5, 6)
變量僅是對象的別名,而不是對象本身。當變量t引用不可修改的tuple對象(1,2,3)時,這個tuple對象不可修改,但可以對變量名t重新賦值,如“t=(4,5,6)”使變量t又引用了這個新的tuple對象。
3.如果1個變量指向的是1個可修改的對象,那么可以通過這個變量修改它指向的對象,而這個時候并不會創建新對象
假設有一個元組 (1,2,[520, 'ss'] ) 元組里有一個元素是列表類型
a = (1,2,[520, 'ss'] ) # a[1] = 20 報錯 print("未修改前{}".format(a)) a[2][1] = 'sz' print("修改后{}".format(a)) print(a[2])輸出:
- 未修改前(1, 2, [520, 'ss'])
- 修改后(1, 2, [520, 'sz'])
- [520, 'sz']
總結
? 數據類型分為可變類型和不可變類型,可變類型的對象的值是可修改的,而不可變類型的對象的值是不可修改的。
? 無論變量指向的是一個可修改的對象,還是一個不可修改的對象,給這個變量賦值都會使這個變量引用其他的對象(如創建的新對象)。對變量指向的可變對象的值進行修改不會使變量引用新對象,只是修改變量引用的對象的值。
六、控制語句
1.if條件語句
? ? ? ? ? ?注意縮進:if語句體的多條語句必須具有一致的縮進
? ? ? ? ? ?否則報錯:產生“縮進錯誤(IndentationError)
if....else
? ? if...else..還有一種用法:A if B else C
? ? 如果B成立就執行A,否則就執行C
if...elif...else
2.循環語句
1.while循環語句
例如,可以用while循環語句編寫計算學生平均成績:
?2.for循環語句
Python還有一個用于遍歷訪問一個容器(如str、list或tuple等容器)對象的每個元素的for...in循環
li = [1,2,3,2.14,'wos',True] for each in li:print(each)輸出:
?什么是可迭代對象?
它可以通過for循環迭代地訪問其中的元素的一種對象,如list、tuple、set、dict和字符串str類型的對象都是可迭代對象
函數range():range(strat,stop[,step])
該函數返回一個可迭代對象,該對象包含了介于start和stop之間(但不包含stop)的一系列整數的可迭代對象
可以將函數range()產生的可迭代對象傳遞給內置函數list()或tuple()等構造一個list對象或tuple()對象。
?3.break語句
在重復執行循環體時,如果滿足某種條件,就可以用break語句跳出循環,即不再執行循環體。
4.continue語句
在執行循環體時,如果遇到continue語句,則會停止執行其后續語句,返回循環開頭繼續執行循環體
?5.else語句
循環語句(for或while)都可以在后面跟一個else語句,當for語句遍歷完整個可迭代對象(如遍歷完整個list的元素),或者當while語句的條件表達式是false退出時,都會執行這個else語句。但是,如果是通過break跳出循環語句則不會執行這個else語句。
6.?pass語句?
?pass是一個空語句,當需要有的地方需要一條語句,但是又不希望這條語句執行任何動作,這時就可以用pass語句,程序不會產生語法錯誤。或者,編寫程序時還未想好寫什么代碼,可以用一個pass語句作為“占位符”
?總結
? if條件語句:if、if...else、if...elif...else等多個用法。
? while循環語句是當條件表達式為True時,會一直執行循環體中的程序塊。
?循環for語句是迭代訪問一個可迭代對象的所有元素。
? break語句用于跳出循環。continue語句用于終止循環體中后續的語句執行,重新開始下一輪循環。除非用break語句跳出循環,否則循環結束總會執行else語句。
? 空語句pass用于語法上需要語句而實際不需要做任何工作的地方,或者用作占位符,以等待后續補充代碼。
總結
以上是生活随笔為你收集整理的【Python】基础速通的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python 正则re模块之compil
- 下一篇: 高阶幻方