Python知識(shí)點(diǎn)
基本語(yǔ)法
字面量:在代碼中,被寫下來(lái)的固定的值(=常量)
常見(jiàn)值類型
a)數(shù)字 ??1)整數(shù)【int】
2)浮點(diǎn)數(shù)【float】
3)復(fù)數(shù)【complex】
4)布爾【bool】true/false
b)字符串
三種定義 ??1 單引號(hào)
???????????2 雙引號(hào)
???????????3 三引號(hào)(和多行注釋寫法相同,支持換行)
字符串拼接 字符串+字符串(不能是數(shù)字等其他類型拼接)
字符串格式化 %s占位拼接(%占位,s 將變量變成字符串)
%s
??????%d
???????%f
字符型
整形
浮點(diǎn)型
例 “我叫%s,是一名%s”??%(顧皓,學(xué)生)【順序占位】
快速格式化字符串 語(yǔ)法 f”內(nèi)容{變量}”【不做精度控制 類型不論】
數(shù)字精度控制(m.n)【m控制寬度(!寬度大于數(shù)字本身)?.n控制小數(shù)點(diǎn)精度(會(huì)四舍五入)】
對(duì)表達(dá)式進(jìn)行格式化 ??
表達(dá)式【一條具有明確執(zhí)行結(jié)果的代碼語(yǔ)句】
c)列表
d)元組
e)集合
f)字典
注釋
a)單行注釋#( ?規(guī)范:#和注釋內(nèi)容以一個(gè)空格隔開(kāi))
規(guī)范是習(xí)慣,如果不做,也不是錯(cuò)誤
b)多行注釋(支持換行)”””???””””
變量:在程序運(yùn)行時(shí),能存儲(chǔ)計(jì)算結(jié)果或能表示值的抽象概念
定義格式:變量名稱=變量的值
數(shù)據(jù)類型
type()查看數(shù)據(jù)類型(可以用變量接收)
變量沒(méi)有類型,變量存儲(chǔ)的數(shù)據(jù)是有類型的
數(shù)據(jù)類型轉(zhuǎn)換
整數(shù)轉(zhuǎn)字符串 ???符號(hào)轉(zhuǎn)字符串
任意類型可以轉(zhuǎn)字符串
字符串不一定可以轉(zhuǎn)化為其他類型
標(biāo)識(shí)符:內(nèi)容的標(biāo)識(shí)
變量名、方法名、類名……統(tǒng)稱——標(biāo)識(shí)符
命名規(guī)則
1)內(nèi)容限定:英文、中文(不建議使用)、數(shù)字、下劃線(_)
???????【數(shù)字不可以用在開(kāi)頭】
2)大小寫敏感
3)不可以使用關(guān)鍵字
運(yùn)算符
算術(shù)運(yùn)算符
???+
???-
???*
???/
???//
???%
??**
???加
???減
???乘
???除
取整除
取余
指數(shù)
賦值運(yùn)算符
= 將右邊結(jié)果賦給左邊
復(fù)合賦值運(yùn)算符
+=
-=
*=
??/=
??%=
**=
//=
數(shù)據(jù)輸入(input())
Input()從鍵盤中獲取輸入。用一個(gè)變量接收
print(“請(qǐng)告訴我你是誰(shuí)?”) ?name = input()
等價(jià)于 ??name = input(“請(qǐng)告訴我你是誰(shuí)?”)
獲取到的類型是字符串類型
判斷語(yǔ)句
比較運(yùn)算符
???==
!=
>
<
>=
<=
條件語(yǔ)句(結(jié)果要有4格縮進(jìn))
語(yǔ)法
1) if ?條件:
?????????結(jié)果
?????四個(gè)空格
??2) ?If ?條件:
?????????結(jié)果
??????else:
?????????結(jié)果 ??
???3)if 條件:
??????????結(jié)果
??????elif 條件:
??????????結(jié)果
??????……
??????else:
??????????結(jié)果
4)if 條件:
???????if 條件:
???????????結(jié)果
空格縮進(jìn)決定邏輯關(guān)系
循環(huán)語(yǔ)句
語(yǔ)法
1 ?while 條件:
?????????????????事情
2 ?while 條件:
???????while 條件:
???????????事情
print(“??”,end=’??‘) ?print輸出不換行
制表符 ?\t
for ?臨時(shí)變量 in 待處理數(shù)據(jù)集
事情
無(wú)法定義循環(huán)條件,只能被動(dòng)取出數(shù)據(jù)處理
range(a,b)指a到b-1
continue 臨時(shí)跳過(guò)
break ?終止循環(huán)
函數(shù):組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)特定功能的代碼段
提高程序的復(fù)用性、減少重復(fù)性代碼、提高開(kāi)發(fā)效率
語(yǔ)法
def 函數(shù)名(傳入?yún)?shù)):
函數(shù)體
return 返回值
調(diào)用 函數(shù)名(參數(shù))
參數(shù)、返回值可以省略
None 返回值空
If判斷中None=False
函數(shù)說(shuō)明文檔=注釋,方便閱讀
局部變量:函數(shù)體定義的變量,在函數(shù)體內(nèi)有效
全局變量:在函體外定義,在函數(shù)體內(nèi)外都可以使用
globe在函數(shù)體內(nèi)聲明函數(shù)體內(nèi)變量是全局變量
數(shù)據(jù)容器:一個(gè)可以容納多份數(shù)據(jù)的數(shù)據(jù)類型,容納的每一份數(shù)據(jù)稱之為1個(gè)元素。每一個(gè)元素都可以是任意類型的數(shù)據(jù)
可以容納多個(gè)數(shù)據(jù) ?【批量使用、存儲(chǔ)數(shù)據(jù)】
分為五類:列表、元組、字符串、集合、字典
列表 ?
特點(diǎn):1)可以容納2**63-1個(gè)元素
2)可以容納不同類型的元素
3)數(shù)據(jù)是有序存儲(chǔ)的
4)允許重復(fù)數(shù)據(jù)存在
5)可以修改
變量名稱=[ , , …… ,] ???/ ??變量名稱=list( )
列表的下標(biāo)索引【可以反向索引】
正0,1,2,3……
反-1,-2,-3……
取特定元素 列表[ ?]
方法:由class(類)組成的代碼段
查詢指定元素的下標(biāo) ?列表.Index(元素)
修改下標(biāo)索引值 列表[下標(biāo)]=值
插入元素 ??列表.Insert(下標(biāo),元素)
追加元素:將指定元素,追加到列表的尾部 ?
列表.append(元素) ??追加一個(gè)元素
列表.extend(其他數(shù)據(jù)容器) ?追加多個(gè)元素
元素的刪除
del列表[下標(biāo)] ?
列表.pop(下標(biāo)) ?刪除的元素可以用返回值得到
列表.remove(元素) ?從前往后搜索元素,刪除第一個(gè)找到的元素
列表.clear( ) ?清空列表
統(tǒng)計(jì)元素出現(xiàn)的次數(shù) ?列表.count(元素)
統(tǒng)計(jì)列表有多少元素 ?len(列表)
遍歷、迭代:將容器內(nèi)的元素依次取出進(jìn)行處理
while循環(huán) ???while循環(huán)適用于任何想要循環(huán)的場(chǎng)景
for循環(huán) ??for循環(huán)適用于遍歷數(shù)據(jù)容器或簡(jiǎn)單的固定次數(shù)循環(huán)場(chǎng)景
元組
變量名 = ( , ,……,) ??????/變量名 = tuple( )
【一旦定義就不可以修改】
特例:元組內(nèi)嵌套列表,列表元素可以修改
取元素 變量名[下標(biāo)]
index( ) ?查找某個(gè)元素
count( ) ?統(tǒng)計(jì)某個(gè)數(shù)據(jù)在當(dāng)前元組出現(xiàn)的次數(shù)
len( ) ?統(tǒng)計(jì)元組內(nèi)的元素個(gè)數(shù)
元組遍歷
字符串 ???【不可以修改】
取字符串元素 變量名[下標(biāo)]
字符串的替換 ?(功能:將字符串中全部x替換成z)
字符串.repace(字符串1,字符串2)
不要修改字符串本身,而是得到了一個(gè)新字符串!
字符串分割(功能:按照指定的分隔符字符串,將字符串劃分為多個(gè)字符串,并存入列表對(duì)象中)
字符串.split(分隔符字符串)
字符串本身不變,而是得到了一個(gè)列表對(duì)象
字符串規(guī)整操作
字符串.strip() ?不傳入數(shù)據(jù),則去除前后空格
字符串.strip(字符串) ?去除前后指定字符串
例:(12)去除字符串中1和2
序列:內(nèi)容連續(xù)、有序,可使用下標(biāo)所應(yīng)的數(shù)據(jù)容器
列表、元組、字符串都是序列
切片:從一個(gè)序列中取出一個(gè)子序列
語(yǔ)法 序列[起始下標(biāo):結(jié)束下標(biāo)(不含):步長(zhǎng)]
起始下標(biāo)可以留空,表示從頭開(kāi)始
結(jié)束下標(biāo)留空,表示截取到結(jié)尾
步長(zhǎng)表示:依次取元素的間隔
例:1表示一個(gè)個(gè)取元素(步長(zhǎng)1可以省略)
N表示每次跳過(guò)N-1個(gè)元素取
步長(zhǎng)可以為負(fù),表示反向?。ㄆ鹗枷聵?biāo)、結(jié)束下標(biāo)也要反向標(biāo)記)
不會(huì)影響序列本身,而是生成新的序列
集合:不重復(fù),無(wú)序【不支持下標(biāo)索引】
變量名={ ?} ??????/變量名=set( )
添加新元素 集合.add(元素)
移除元素 ??集合.remove(元素)
隨機(jī)取出元素 集合.pop( )【有返回值】
清空集合 ?集合.clear( )
取兩個(gè)集合的差集 ?集合1.difference(集合2) 【原集合不變】
取出集合1中與集合2不同的元素
消除兩個(gè)集合的差集 集合1.difference_update(集合2) 【集合1改變】
消除集合1中與集合2相同的元素
2個(gè)集合合并 ?集合1.union(集合2) ?【原集合不變】
將集合1和集合2組合成新集合
統(tǒng)計(jì)集合元素?cái)?shù)量 len.(集合)
集合的遍歷 ?集合不支持下標(biāo)索引,so while循環(huán)X
字典:通過(guò)key 找到value ??【鍵值對(duì)】 【不可以key重復(fù)】
key不可以是字典,其他類型可以
字典={ : , : ,} ?????/ ?字典=dict()
新增元素:字典[key]=value ??【如果key不存在】
更新元素:字典[key]=value ???【如果key存在】
刪除元素:字典pop(key)
清空元素:字典.clear()
獲取全部的key: 字典.keys()
遍歷字典:for循環(huán)(獲取keys ?對(duì)字典循環(huán))
例:for key in keys ??for key in dict
統(tǒng)計(jì)字典的元素?cái)?shù)量: len(字典)
數(shù)據(jù)容器總結(jié):
都可以遍歷【集合和字典不可以用while循環(huán)】
統(tǒng)計(jì)容器的元素個(gè)數(shù):len(容器)
統(tǒng)計(jì)容器的最大元素:max(容器)
統(tǒng)計(jì)容器的最小元素:min(容器)
轉(zhuǎn)換 list(容器)【將指定容器轉(zhuǎn)換成列表】
?????str(容器)【將指定容器轉(zhuǎn)換成字符】
?????tuple(容器)【將指定容器轉(zhuǎn)換成元組】
?????set(容器)【將指定容器轉(zhuǎn)換成集合】
字典轉(zhuǎn)換成列表和元組會(huì)丟失value,轉(zhuǎn)換成字符串會(huì)保留
給指定容器排序 ?由小到大sorted(容器)【排序結(jié)果是列表】
????????????????由大到小sorted(容器,reverse=true)
字符串大小比較 按位比較 ?【ASC11碼】
函數(shù)
1.?函數(shù)多返回值
函數(shù)只會(huì)返回第一個(gè)return
return可以返回多個(gè)返回值,用多個(gè)變量接收 【支持不同類型】
?例:def test()
return 1,2
?????x,y=test()
2.?函數(shù)多種傳參方式
位置參數(shù):調(diào)用函數(shù)時(shí)根據(jù)函數(shù)定義的參數(shù)位置來(lái)傳遞參數(shù)
傳遞的參數(shù)與定義的參數(shù)的順序及個(gè)數(shù)必須一致
關(guān)鍵字參數(shù)
函數(shù)調(diào)用時(shí)通過(guò)“鍵=值”形式傳遞參數(shù)
作用:可以讓函數(shù)更加清晰、容易使用,同時(shí)也清除了參數(shù)的順序需求
函數(shù)調(diào)用時(shí),如果有位置參數(shù)時(shí),位置參數(shù)必須在關(guān)鍵字參數(shù)的前面,但關(guān)鍵字參數(shù)之間不存在先后順序
不定長(zhǎng)參數(shù)(可變參數(shù))
用于不確定調(diào)用的時(shí)候會(huì)傳遞多少個(gè)參數(shù)
作用:當(dāng)函數(shù)調(diào)用時(shí)不確定參數(shù)個(gè)數(shù),可以使用不定長(zhǎng)參數(shù)
A)?位置傳遞
例: def ?test(*args)
傳進(jìn)的所有參數(shù)都會(huì)被args變量收集,它會(huì)根據(jù)傳進(jìn)參數(shù)的位置合并為一個(gè)元組,args是元組類型
B)?關(guān)鍵字傳遞
例: def ?test(**kwargs)
參數(shù)是“鍵=值”形式的形式的情況下,所有的“鍵=值”都會(huì)被kwargs接受,同時(shí)會(huì)根據(jù)“鍵=值”組成字典
缺省參數(shù)(默認(rèn)參數(shù))
用于定義函數(shù),為參數(shù)提供默認(rèn)值,調(diào)用參數(shù)時(shí)可不傳該默認(rèn)參數(shù)的值
所有位置參數(shù)必須出現(xiàn)在默認(rèn)參數(shù)前,包括函數(shù)定義與調(diào)用
默認(rèn)函數(shù)定義從右向左
作用:當(dāng)調(diào)用函數(shù)時(shí)沒(méi)有傳遞參數(shù),就會(huì)使用默認(rèn)是用缺省參數(shù)對(duì)應(yīng)的值(函數(shù)調(diào)用時(shí),如果為缺省參數(shù)傳值則修改默認(rèn)參數(shù),否則使用這個(gè)默認(rèn)值)
3.?匿名函數(shù)
A)?函數(shù)作為參數(shù)傳遞
函數(shù)可以作為參數(shù)傳入函數(shù)
計(jì)算邏輯的傳遞,而非數(shù)據(jù)的傳遞
B)lambda匿名函數(shù)
def定義帶有名稱的函數(shù)
lambda定義匿名函數(shù)
有名稱的函數(shù),可以基于名稱重復(fù)使用
無(wú)名稱的函數(shù),只可臨時(shí)使用一次
lambda 傳入?yún)?shù):函數(shù)體(一行代碼)
·lambda 表示定義匿名函數(shù)
·傳入?yún)?shù)表示匿名函數(shù)的形式參數(shù),如:x,y表示接收2個(gè)形式參數(shù)
·函數(shù)體,就是函數(shù)的執(zhí)行邏輯 【只能寫一行,無(wú)法寫多行代碼】
例:test(lambda x,y:x+y)
編碼是一種規(guī)則集合,記錄了內(nèi)容和二進(jìn)制間進(jìn)行相互轉(zhuǎn)換的邏輯
打開(kāi)文件 文件對(duì)象=open(name,mode,encoding )【也可以創(chuàng)建新文件】
name:打開(kāi)的目錄文件名的字符串(可以包含文件所在的具體路徑)
mode:設(shè)置文件打開(kāi)的模式(訪問(wèn)模式):只讀r、寫入w、追加a等
encoding:編碼格式(推薦使用UTF-8)
模式
描述
r
以只讀的方式打開(kāi)。文件的指針將會(huì)放在文件的開(kāi)頭
w
打開(kāi)一個(gè)文件用于寫入,如果該文件已存在則打開(kāi)文件,并從開(kāi)始編輯,原內(nèi)容會(huì)被刪除。
a
打開(kāi)一個(gè)文件用于追加,如果該文件已存在,新的內(nèi)容將會(huì)被寫到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進(jìn)行寫入。
文件對(duì)象.read(num) 【num表示要從文件中讀取的數(shù)據(jù)的長(zhǎng)度(單位是字節(jié)),如果沒(méi)有傳入num,則表示讀取文件中所有數(shù)據(jù)】
文件對(duì)象.readlines() 【可以按照行的方法把整個(gè)文件中的內(nèi)容進(jìn)行一次性讀取,并且返回的是一個(gè)列表,并且每一行的數(shù)據(jù)為一個(gè)元素】
文件對(duì)象.readline() 【一次讀取一行內(nèi)容】
多個(gè)read是從上個(gè)read結(jié)尾開(kāi)始
關(guān)閉文件 文件對(duì)象.close() ?【如果不關(guān)閉,文件一直被Python占用】
with open(name,mode)as 文件對(duì)象 ?【自動(dòng)完成close】
文件寫入 文件對(duì)象.write(內(nèi)容) 【存儲(chǔ)在緩沖區(qū)】
內(nèi)容刷新 文件對(duì)象.flush() ?
捕捉異常的作用在于:提前假設(shè)某處會(huì)出現(xiàn)異常,做好提前準(zhǔn)備,當(dāng)真的出現(xiàn)異常的時(shí)候,可以有后續(xù)手段。
try:
可能出現(xiàn)錯(cuò)誤的代碼
except:
????如果出現(xiàn)異常執(zhí)行的代碼
try:
可能出現(xiàn)錯(cuò)誤的代碼
except 錯(cuò)誤類型(Exception所有異常【頂級(jí)異?!? as a:
???如果出現(xiàn)異常執(zhí)行的代碼
else:
與try代碼相連接代碼
finally: ???#無(wú)論有無(wú)異常都執(zhí)行
代碼
異常的傳遞性
Python模塊是一個(gè)Python文件,以.py結(jié)尾 模塊能定義函數(shù),類和變量,模塊里也能包含可執(zhí)行的代碼。
作用:python中有很多各種不同的模塊,每個(gè)模塊都可以幫助我們快速的實(shí)現(xiàn)一些功能,比如實(shí)現(xiàn)和時(shí)間相關(guān)的功能就可以使用time模塊。我們可以認(rèn)為一個(gè)模塊就是一個(gè)工具包,每一個(gè)工具包中都有各種不同的工具供我們使用進(jìn)而實(shí)現(xiàn)各種不同的功能。
模塊的導(dǎo)入方法
語(yǔ)法[from模塊名]import[模塊|類|變量|函數(shù)|*] [as 別名] ????????#[]代表可選
常用組合
·import 模塊名 ??#導(dǎo)入模塊
·from模塊名import類、變量、方法等
#導(dǎo)入模中特定功能
from模塊名import*與import模塊名區(qū)別:運(yùn)用方式不同
from模塊名import* ??功能名
import模塊名 ???????模塊.功能名
·import模塊名as別名 / from模塊名import功能名as別名
#給具體模塊/功能改名
自定義模塊時(shí)測(cè)試內(nèi)容前輸入main 可以測(cè)試函數(shù),在主文件中調(diào)用
?????【測(cè)試內(nèi)容對(duì)調(diào)用無(wú)影響】
模塊中有‘a(chǎn)ll’變量使用‘from xxx import *’,只能導(dǎo)入這個(gè)列表中的元素
all=[函數(shù)]
Python包:一個(gè)文件夾
【包含了一個(gè)__init__.py文件,可以包含多個(gè)模塊文件,本質(zhì)仍是模塊】
_all_=[]寫在_init_.py文件中
第三方包(非Python官方)
安裝步驟
方法一
·搜索cmd 打開(kāi)命令提示符
· pip install 包名(國(guó)外網(wǎng)站,下載速度慢)
?·pip install -i https://pypi.tuna.tsinghua.edu.cn/simple?包名(速度快)
方法二
·打開(kāi)pycharm ,點(diǎn)擊右下角python,選擇解釋器設(shè)置
·點(diǎn)擊軟件包上方的’+’,輸入添加的包名
·選擇指定版本,并安裝
·點(diǎn)擊選項(xiàng),輸入https://pypi.tuna.tsinghua.edu.cn/simple,點(diǎn)擊下載
?