python基础:细节问题梳理
基本數(shù)據(jù)類型
字符串
1. 多行字符串
2. 原始字符串
序列共同特征
字符串
index訪問
切片
- 拼接
- 數(shù)乘
2. 列表
+ index訪問
- 切片
- 拼接
- 數(shù)乘
3. 元組
index訪問
切片
- 拼接
- 數(shù)乘
注意:序列中不存在減運(yùn)算
注意:min/mx遵循ascll碼,方法如下:
集合
- 無序,不能使用index以及切片
- 不重復(fù)
- 可以使用in/len/min/max
- 特有運(yùn)算符:差集、交集、并集
注意:序列與集合為空時的表示:
python基本數(shù)據(jù)類型歸納
分類:
+ 值類型:不可改變,包括str,int,float,tuple
值類型的數(shù)據(jù)不可改變表現(xiàn)在:數(shù)據(jù)只可讀不可該,對變量重新賦值是析構(gòu)原變量后生成新變量,所以從這個意義上來說,值類型數(shù)據(jù)不允許改變(簡單判斷方法:內(nèi)存地址沒變就是不可改變)
復(fù)雜情況:
可以看出:a[3]是引用類型,可以改變,改變后a[3]內(nèi)存地址未變,相當(dāng)于未對元組元素進(jìn)行改變,如果試圖給a[3]賦值,即改變a[3]內(nèi)存地址,則報錯。所以可證整個元組不可改變
因此:元組的不可改變指:元祖起始內(nèi)存ID不變,各個元素的起始ID也不可改變!!!
- 引用類型:可改變,包括list,set,dict
可以看出,元素的內(nèi)存地址改變了,所以可以改變。
python運(yùn)算符
+ 算數(shù)運(yùn)算符中的Bool值
int str list tuple
set dict
報錯總結(jié):
- 廣義的比較運(yùn)算符
str
按ascll碼比較,從左往右比,字符與字符間采用與邏輯
list tuple
序列數(shù)據(jù)類型軍類似
注意:其他未提到的數(shù)據(jù)類型如字典等,一般不進(jìn)行關(guān)系運(yùn)算
- 邏輯運(yùn)算符及其擴(kuò)展
特征:運(yùn)算符兩端為bool類型的數(shù)值或變量
對于數(shù)值,true/false會自動轉(zhuǎn)變?yōu)閿?shù)值
- 成員運(yùn)算符
特殊地:字典
- 身份運(yùn)算符
is 判斷依據(jù)為內(nèi)存id
- 位運(yùn)算符
運(yùn)算優(yōu)先級
對象三要素:id、value、type
對應(yīng)三個運(yùn)算符和方法: is == isinstance
sublime快捷鍵
- package control : Ctrl+shift+P
- 運(yùn)行python命令行:ctrl + ~
- build:ctrl +B
- 注釋:Ctrl+ /
- 縮進(jìn):Ctrl+] 撤銷縮進(jìn):Ctrl+[
幾個特殊用法
- print(str,’字符’)
- 循環(huán)+else
+ 帶步長的切片
帶步長的range()
pass代碼塊的作用:可以代替正式代碼,后想清楚再填充,并且不會報錯
包、模塊以及導(dǎo)入
- 概念
包:文件夾(通俗)
模塊:某個python文件,里面包含類與函數(shù)
- 模塊導(dǎo)入方法
- import module_name [as new_name]
import只能接module_name,后面不能接package_name或者module_name.variable_name…
所以通過import module_name導(dǎo)入模塊后,要使用variable/function/class…必須是這樣的形式:module_name.variable_name/function_name/class_name
相比于import直接導(dǎo)入模塊,from … import 直接導(dǎo)入模塊內(nèi)元素
從 某個包導(dǎo)入某個模塊
from package_name import * :導(dǎo)入包的所有模塊
import package
import 直接導(dǎo)入包的方法不存在,此寫法實(shí)際上會導(dǎo)入package的init模塊,因為init.py本身是一個模塊,他的模塊名叫做package_name
- 特殊情況舉例
要想利用*導(dǎo)入package下的modules,必須在package的init.py中用系統(tǒng)變量all標(biāo)識。
導(dǎo)入某個package特定module
類似上一個,在all中標(biāo)識
導(dǎo)入某個module
- 與all的搭配
- 從包中導(dǎo)入多個模塊時(上面已經(jīng)舉例)
- 從模塊中導(dǎo)入多個元素時
- 與all的搭配
注意:避免循環(huán)導(dǎo)入module,即module1導(dǎo)入module2,module2又導(dǎo)入module1;python有避免重復(fù)導(dǎo)入module的機(jī)制
- __init__.py的作用:可以添加某個package下所有module均需要導(dǎo)入的其他module
上述總結(jié)的作用是:在init文件中寫入大量公共import,其他文件或模塊直接 import package_name即可引入所有公共import ,提高工作效率。
插入:round系統(tǒng)函數(shù)
3:小數(shù)點(diǎn)后三位
序列解包
在函數(shù)中的應(yīng)用
函數(shù)
關(guān)鍵字參數(shù)與默認(rèn)參數(shù)
未完待續(xù)。。。
類與對象
一、概覽
二、類變量+實(shí)例變量+實(shí)例方法+構(gòu)造函數(shù)
- 含義:
類變量:不依附于某一個具體的對象,一般為類的多個實(shí)例所共有,比如,sum:對類的實(shí)例進(jìn)行計數(shù)統(tǒng)計
實(shí)例變量:為對象所特有,如姓名等
優(yōu)雅的類須嚴(yán)格區(qū)分二者!
實(shí)例方法:為實(shí)例服務(wù)的方法
構(gòu)造函數(shù):特殊的實(shí)例方法,為對象初始化
- 具體區(qū)分
1.
可見,通過系統(tǒng)變量dict,可以查看類或?qū)ο蟮膶傩?#xff1b;對象student1不含有類變量sum!!
2.
對象既可以訪問實(shí)例變量,也可以向上查找類變量;類當(dāng)然可以訪問類變量,但不能訪問實(shí)例變量
3.
實(shí)例方法訪問類變量的兩種方式
實(shí)例方法訪問實(shí)例變量:當(dāng)然
對象調(diào)用實(shí)例方法:當(dāng)然;類調(diào)用實(shí)例方法也可以,但意義不大,很雞肋,只不過python提供了這樣一種靈活的使用方式
雖然比較雞肋,但此處解釋了參數(shù)self的含義:實(shí)例方法中的self指對象,self名稱可以變!
可以看到:無報錯
三、類方法與靜態(tài)方法
類方法
- 類方法定義:@classmethod
對象可以調(diào)用類方法,不推薦;類可以調(diào)用類方法,推薦;
類方法當(dāng)然能調(diào)用類變量:cls.variable,類方法不能調(diào)用實(shí)例變量;當(dāng)然cls也可以換為其他符號,比如this
2.靜態(tài)方法
- 靜態(tài)方法定義:@staticmethod
靜態(tài)方法本質(zhì)上就是個普通函數(shù),但放在類里,可以像方法一樣使用。靜態(tài)方法為類與實(shí)例提供無差別的方法。
靜態(tài)方法不能訪問實(shí)例變量,可以通過Student.sum來訪問類變量
把它當(dāng)普通函數(shù)對待
四、成員可見性
1.隱藏變量 隱藏的變量不可以通過類、對象直接訪問;但實(shí)例、類方法可以在類內(nèi)部訪問隱藏變量,外部類、對象可以借助各自的方法實(shí)現(xiàn)對隱藏變量的訪問。
五、繼承性與多態(tài)性
- 法1
- 法2
可以看出,同名方法會被覆蓋
正則表達(dá)式與JSON
一、正則概述
- 兩種實(shí)現(xiàn)方法
- 思維導(dǎo)圖
- 用法舉例
re模塊的方法
- findall方法
re.findall(pattern, string, flags)
第三個參數(shù):標(biāo)志位 re.I表示忽略大小寫 re.S表示元字符’.’可以指代換行符
sub方法
re.sub(pattern, repl, string, count, flags)
repl:replace替換值,可以是函數(shù)
count:替換個數(shù)
flages:re.I、re.S
- 參數(shù)為函數(shù)實(shí)現(xiàn)動態(tài)替換
注意:函數(shù)名convert1可以自定義;參數(shù)value1也可以自定義
唯一要求:自定義函數(shù)參數(shù)個數(shù)為1,函數(shù)必須返回某個替代字符串
group 為match對象的一個方法,用來取出匹配值!!
可以說findall與sub是search函數(shù)的高級封裝,封裝了一個一個search的過程
注意group方法的使用;span方法會返回匹配值在字符串中的index!
- group方法使用
直接使用findall更優(yōu)
- 坑:正則最好在字符串前加r
findall()正則中有分組就會只返回分組!!這種情況下使用search+group()可能更靈活
總結(jié)
以上是生活随笔為你收集整理的python基础:细节问题梳理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 在ubuntu16.04中安装apach
- 下一篇: python进阶:JSON与枚举