python基礎簡單複習總結

python基礎

語言是人類最重要的交際工具,是人類之間進行信息交換的主要表達方式。
編程語言是用來定義計算機程序的語言,用來向計算機發出指令。

1.python簡介:

創始人:吉多
需要記住的語言特點:
1.開源
2.面向對象
繼承 封裝 多態 鴨子類型
這樣做項目的時候一些問題就可以專注於調用一些方法來解決問題 ,而不太用去搞明白具體的方法里語言是怎麼寫的 當然 如果要優化的話 可能需要去研究下源碼了
3.解釋型語言讀一行執行一行** 它是用C語言寫的 可能執行的速度會相對慢些
4.簡單 可移植性特別強 python的整個項目的代碼是非常流暢的 就是如果英語比較好的話 讀起來就像是在閱讀一片 優美的散文一樣 膠水語言 比如說可以用python語言在shell裏寫個腳本 就可以進行自動化測試 非常方便
5.三方架構多
6.代碼規範:一個標點,一個空格都不能錯 名稱、縮進、語法 有一個pep8 這樣的一個風格標準

2.運算
算術運算符(重點):+,-,*,/,//(整除),%(取餘),**(次方)

變量(重點) 用來存儲數據 容器 ,重新存儲數據的時候 修改的是 空間內部的數據 不會產生新的空間
=:數據裝進容器的一個通道
變量(變量是標識符的一種)名(標識符)的取名字規則:

規則:
1.只能有字母,下劃線,數字組成
2.不能以數字開頭
3.不能有關鍵字
4.區分大小寫:name Name
約定:單詞統一下小寫,每個單詞之間 用下劃線分割

數據類型:

變量類型
整數:int 取值範圍沒有上限
小數:float 基本沒有上限
bool:True False 取值範圍固定 不太準確
True 數學運算表示 1
False 數學運算表示 0

非數值類型
字符串:str
查看數據類型 type()
input()
print()
輸出佔位符 %s:字符串的佔位

3.=與is的區別
首先要知道Python中對象包含的三個基本要素,
分別是:id(身份標識)、type(數據類型)和value(值)。

is和==都是對對象進行比較判斷作用的,但對對象比較判斷的內容並不相同。下面來看看具體區別在哪。
==比較操作符和is同一性運算符區別
==是python標準操作符中的比較操作符,用來比較判斷兩個對象的value(值)是否相等
is也被叫做同一性運算符,這個運算符比較判斷的是對象間的唯一身份標識,也就是id是否相同
只有數值型和字符串型的情況下,a is b才爲True,當a和b是tuple,list,dict或set型時,a is b爲False。

4.分支語句
計算機三種基礎語句(順序、分支、循環)之一,用於描述“如果滿足什麼條件,就怎麼樣,否則就怎麼樣”的語法。

num=int(input(‘請輸入一個數:’))
if num % 2 ==0:
	print('%s是一個偶數' num)
else:
	print('%s是一個奇數' num)

== !=

案例:減肥計劃、外賣結算
減肥計劃
輸入今天是星期幾,週一跑步、週二跳繩、週三游泳、週四動感單車、週五爬山、週六健身房、週日大喫一頓。
用input int if elif else

5.循環語句
while 重複執行某些代碼
循環概念
循環是程序設計語言中反覆執行某些代碼的一種計算機處理過程
break可以用於終止循環的執行,當執行到break語句後,程序將跳出循環,執行循環語句後面的代碼
continue可以用於提前結束本輪循環的執行,當執行到continue語句後,程序將跳到判定循環是否向下執行的條件處,進行下一輪循環是否執行的判定與後續代碼執行

break 和 continue 都只能用在循環結構裏
break:結束當前while循環
continue:結束當次循環,繼續下一次while:跳過continue後面的代碼

案例:打印三角形、九九乘法表 不用海龜模塊
用循環嵌套 i,j while i < 9; while j<=i; print("%d*%d=%d" % (i , j , i*j ),end="\t")
for i in range(1,10):
for j in range(1,i+1):
    print('%d*%d=%d'% (j,i,j*i),end='\t')   # /t 八個空格   	/n 回車 光標在下一行
print('\t')

while 1:
pass
在編程中死循環並不是一個需要避免的問題,相反,在實際應用中,經常需要用到死循環。例如,我們使用的Windows操作系統下的窗口程序中的窗口都是通過一個叫消息循環的死循環實現的。
死循環也稱作無限循環,是一種無法停止的循環,並不是程序的錯誤

6.函數
函數(function)是將具有獨立功能的代碼塊組織成爲一個整體,使其具有特殊功能的代碼集。
使用函數可以加強代碼的複用性,提高程序編寫的效率。
使用:用別人寫好的功能
定義:我們需要將 一段功能 裝到一個 代碼塊中去 然後給這個代碼塊 取個名字

先定義,後調用
1.函數不調用 不執行
2.函數不能在 定義之前調用

函數的執行過程

函數名()=>回到內部依次執行=>又回到:函數名()======>繼續後面的代碼

函數的調用有一個等待的過程,等待函數內部功能的執行完畢
函數內部功能結束,會回到函數調用的位置

形參:定義時的 叫做形參
實參:調用時 傳遞的叫做 實參
把實參 賦值給 形參 >傳遞數據的通道,單向通道,外部=>內部

3.返回值
函數的返回值return:將函數內部的數據=====>函數調用的位置
從哪進=====>從哪出

7.對象
面向對象是一種編程思想,是對現實世界中的事物進行抽象的方式。應用到代碼編程設計中,是一種建立現實世界事物模型的方式。
對象是類的具體表現形式,是實際存在的個體。(類是一系列事物的統稱)
大駝峯命名,每個單詞首字母大寫

魔術方法:特定的情況 纔會執行的叫做 魔術方法
1.init: 類名() 這個代碼 即創建對象 就會執行
2.str: print(對象) 打印對象時 出現這個代碼 就會執行
3.new 1.類名() 自動執行
2.使用該方法,開空間,並且產生地址值
4.del 數據被刪除的時候執行

封裝:

私有:在成員變量 前面 加上 兩個下滑線 變量私有化
靜態方法 @staticmethod
類方法 @classmethod
類方法是定義在類中,不屬於某個具體對象的行爲,被所有對象共同使用的行爲

繼承 mro繼承順序
繼承:將多個類中相同成員變量和方法抽取到父類中,保留自己特有功能和特徵 發生在父類和子類之間 提高代碼重用
封裝:封裝操作可以對受訪問保護的成員進行功能開放的控制,達到保護數據不被非法訪問的目的
多態同一個對象,在不同的使用環境中以不同的形態展示其功能。
鴨子類型是一種特殊的調用現象,當對象在語法層面能夠滿足調用關係,但對象並不具有對應的對象形態,稱該對象此時具備鴨子類型
鴨子類型是一種特殊的多態表現形式
比如說要招司機,來了個三輪車司機,其實招的是公交車司機

案例:反恐精英基礎版、修復版、加強版、超級加強版

8.數據存儲
包括列表、元組、集合、字典
列表 [] 可變數據類型
列表是一種存儲大量數據的存儲模型。 高級容器 有索引 從0開始

往列表裏添加元素 append 、insert(索引,元素)、extend(列表)、
兩個列表的合併 運算符相加(兩個列表連接,產生一個新的更大的列表)、
append(把後一個列表看成是一個元素整個加入前一個列表中)、extend(把後一個列表的元素逐個加入前一個列表中)、切片、dict(zip(a,b))

刪除 remove pop(有一個返回值,默認刪除最後一個元素)
查詢 index(元素) 查詢元素的位置、索引
統計 count(數據) 統計元素的個數

元組 () 不可變數據類型
存儲固定數據 有索引 元組中的數據可以進行查詢操作,但不能進行添加、刪除、修改操作。
支持拆包、組包

查詢 index(元素) 查詢元素的位置、索引
統計 count(數據) 統計元素的個數

集合 {1,} 可變數據類型

集合是一種存儲大量無序不重複數據的存儲模型。 可以用於簡單的去重 沒有索引 集合中的數據可以進行添加、刪除等操作 無序性
添加 add(元素)
刪除 remove(元素)、pop(有一個返回值,默認刪除最後一個元素)

字典{age:1} 可變數據類型
字典是一種使用“鍵值對結構”存儲數據的存儲模型。沒有索引。字典的鍵是不可變數據類型、是唯一的不能重複。
字典使用鍵key代替索引,可以通過鍵操作字典中存儲的數據值value。字典可以根據鍵key進行數據的添加、刪除、修改、查詢操作。

刪除 pop(key)、popitem()
更新字典 update(date) 使用新字典中的數據對原始字典數據進行更新
dict1 = {“name”:“itcast”,“age”:11}
dict2 = {“address”:“北京”,“age”:22}
dict1.update(dict2)

獲取
獲取鍵的值 get(key)
獲取所有的鍵的列表 dict1.keys()
獲取所有的值的列表 dict1.values()
獲取所有的鍵值對列表 dict1.items()
dict1 = {“name”:“itcast”,“age”:11}
print(dict1.items())
dict_items([(‘name’, ‘itcast’), (‘age’, 11)])

格式轉換 list()、tuple()、set()

for循環用於對數據存儲模型進行訪問遍歷
range的功能:創建連續的整數

range()
1. 幫助列表 集合 元組 填充有規律的 整數 數據
2. 用於循環結構

range(開始,結束,遞增數)
開始:默認爲0 可以省略 =開始
結束:必須明確 ,不包含 <結束
遞增數: 每次遞增1 可以正負, +=遞增數

添加從0-10的偶數,由大到小排列
list1=[]

for i in range(10,-1,-1):
	if i % 2 ==0:
		list1.append(i)

print(list1)

數據公用方法

查詢元素長度 len()
查詢最大值 max()
查詢最小值 min()

切片
切片的作用 獲取列表、元組或字符串中的局部數據
容器對象[開始索引:結束索引:步長]
空格也算一位元素,佔用一個索引,索引從0開始,包含開始元素,不包含結束元素
可以用切片的方式實現兩個列表合併

容器=容器[開始:結束:遞增數] =開始 不包含結束 +遞增數
遞增數爲正整數:
開始不寫默認爲0
結束不寫默認取值到最後

遞增數爲負數: 只是切的方向發生了改變 變爲從右往左切
開始不寫默認爲最後一個索引
結束不寫默認取值到開始

省略開始索引:默認開始索引爲0
範例:list1[:5:1] 等同於 list1[0:5:1]
省略結束索引:默認結束索引爲數據總量
範例:list1[0::1] 等同於 list1[0:len(list1):1]
省略步長:每次遞增索引數爲1
範例:list1[0:5:] 等同於 list1[0:5:1]
負數步長: 反向操作/反向步長操作,需要開始索引、結束索引逆序輸入,可用於逆序
範例: list1=[1,2,3,4,5] a=list1[4:0:-1] print(a) 得到[5,4,3,2]
常見格式:
範例:list1[:5:] 獲取索引5之前的數據(不含5)
範例:list1[4::] 獲取索引4之後的數據(含4)

用什麼 容器 切 就得到什麼容器

for…else基本語法
for 變量名 in 列表:
變量相關操作
else:
循環正常運行結束後執行的操作

如果for循環中執行了break語句,則else中的代碼將不執行
while循環同樣具有while…else語法格式

案例:鬥地主 完成洗牌、發牌、打印3個玩家各自的牌
用 random模塊 循環嵌套添加花色和數字 r = random.randiant(0,53) #一共54張牌random.randiant裏包括末尾數,寫53。

字符串 “”,‘’,“”“”“”,‘’‘’‘’
字符串是一個容器,包含若干個字符並按照一定的順序組織成一個整體。字符串支持索引操作。可以切片。
字符串.lower() 轉小寫 字符串.upper() 轉大寫
strip (str) 關鍵詞:左右去字符
split(str) 關鍵詞:多段拆分
join(str) 關鍵詞:佔位連接
count(str) 關鍵詞:字符串數量
replace(old_str,new_str,num) 關鍵詞:替換

字符串.startswith() 判斷前綴
字符串.endswith() 判斷後綴

9.參數 和函數
位置參數、默認參數、關鍵字參數、可變參數、字典參數
遞歸函數、匿名函數

位置參數:包括位置形參、位置實參
默認參數:定義時的形參有值就是默認參數 def func(a=1)
關鍵字參數:調用時實參賦值,就是關鍵字參數 func(b=1)
可變參數:*args接受多餘的位置參數的 可以接收無數個實參的形參 包裝成元組對象 def func(a,b,*args): func(1,5,6,7,8,9)
字典參數: **kwargs接受 多餘的關鍵字參數 包裝成一個字典對象 def 函數名(**kwargs): 函數名(關鍵字實參,關鍵字實參,…)

默認參數作用:
減少函數/方法中大量反覆的固定值的傳參
爲用戶預留可操作的入口

可變參數的 另外一種使用方式:
1.定義的時候 做 組包
2.調用傳遞的時候 做 解包

注意點:推薦書寫順序
def 函數名(位置a,可變參數*args,默認參數b=2,字典參數**kwargs):
pass

函數名(位置0,數據1,數據2,數據3,…,關鍵字參數b=3,關鍵字參數c=4,關鍵字參數d=5)

遞歸函數定義要求
1.函數體中具有對自身函數的調用
2.函數體中具有明確的函數執行結束判定條件
Python語言中函數調用最大層級爲1000層,超過該層級,程序將報錯(不同語言設置不同)

5.匿名函數:匿名函數即沒有名稱的函數,在python語言中,匿名函數是使用lambda關鍵字定義的一個特殊表達式,也稱爲lambda表達式。

def add(a,b):
	return a+b
c=add(2,3)
print(c)
可寫爲:c=(lambda a,b :a + b) (2,3)   print(c)

10.數據類型
可變數據類型 列表,字典,集合,變量
不可變數據類型 字符串、整型、浮點型、元組

可變類型:形參的改變 直接影響實參
不可變類型:形參的改變,不影響實參

列表、集合、字典、對象的引用格式十分相似,都是指向一個存儲區域,存儲區域內數據發生變化,原始對象的引用不變
數字、字符串、布爾值、元組的引用格式十分相似,其存儲數據的空間內容不允許發生改變,修改數據是變更原始對象的引用地址
數據存儲空間中的數據可以發生變化的數據稱爲可變類型數據
數據存儲空間中的數據不能發生變化的數據稱爲不可變類型數據
可變類型: 列表、集合、字典、對象
不可變類型: 數值、字符串、布爾、元組

函數的形參如果接收到的實參是不可變類型,函數內部的操作,不會對外部的實參產生影響
函數的形參如果接收到的實參是可變類型,函數內部的操作,會對外部的實參產生影響
對默認參數的值儘量避免使用可變類型的數據

3.is操作:
is 和 == 的功能相似
1.==:判斷內容
2.is:判斷地址

4.單例模式:
1.概念:只能創建一個對象
2.代碼核心思想:限制函數或者方法 內部的 某部分 的 執行次數
限制代碼的執行:
1.定義標記,判斷標記
2.第一個調用者使用之後,修改標記
3.關鍵點:在哪兒定義標記 最重要(所有調用者共享的數據)

5.文件讀寫 with open(‘1.jpg’,rb) as f : f.write(11.jpg)
6.模塊的導入方式
1.全部導入 import 文件名
2.局部導入:from 文件名 import 變量/函數名

重點複習:python基礎、切片、字典、bool判斷、=與is的區別

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章