目錄
一、異常TODO
萬能捕捉異常公式
try:
# 邏輯代碼
1/0
except Exception as e:
print(e)
division by zero
二、深淺拷貝
2.1 拷貝
拷貝/淺拷貝/深拷貝都是針對可變類型數據而言的
l1 = ['a','b','c',['d','e','f']]
l2 = l1
l1.append('g')
print(l1) # ['a','b','c',['d','e','f'],'g']
print(l2) # ['a','b','c',['d','e','f'],'g']
如果l2是l1的拷貝對象,則l1內部的任何數據類型的元素變化,則l2內部的元素也會跟着改變,因為可變類型值變id不變
2.2 淺拷貝
import copy
l1 = ['a','b','c',['d','e','f']]
l2 = copy.copy(l1)
l1.append('g')
print(l1) # ['a','b','c',['d','e','f'],'g']
print(l2) # ['a','b','c',['d','e','f']]
l1[3].append('g')
print(l1) # ['a','b','c',['d','e','f','g'],'g']
print(l2) # ['a','b','c',['d','e','f','g']]
如果l2是l1的淺拷貝對象,則l1內的不可變元素發生了改變,l2不變;如果l1內的可變元素發生了改變,則l2會跟着改變
2.3 深拷貝
import copy
l1 = ['a','b','c',['d','e','f']]
l2 = copy.deepcopy(l1)
l1.append('g')
print(l1) # ['a','b','c',['d','e','f'],'g']
print(l2) # ['a','b','c',['d','e','f']]
l1[3].append('g')
print(l1) # ['a','b','c',['d','e','f','g'],'g']
print(l2) # ['a','b','c',['d','e','f']]
如果l2是l1的深拷貝對象,則l1內的不可變元素發生了改變,l2不變;如果l1內的可變元素發生了改變,l2也不會變,即l2永遠不會因為l1的變化而變化
三、數據類型內置方法
3.1 數字類型內置方法
3.1.1 整型
- 作用:定義年齡/身高/體重/id號
- 定義方式:
age = 18
age = int('18')
- 方法:
+ - * / % // **
- 多個值or一個值:一個值
- 有序or無序:壓根沒有有序無序這一說
- 可變or不可變:不可變
- 可變:值變id不變,值變id也變
3.1.2 浮點型
- 作用:定義薪資/價格
- 定義方式:
salary = 3.2
salary = float('3.2')
- 方法:
+ - * / % // **
- 多個值or一個值:一個值
- 有序or無序:壓根沒有有序無序這一說
- 可變or不可變:不可變
3.2 字符串類型內置方法
- 作用:姓名/
- 定義方式:
name = 'nick'
name = "nick"
name = '''
nick
nick
'''
name = """
nick
nick
"""
name = "'nick'"
name = '"nick"'
- 方法
- 優先掌握
- 索引取值
- 切片
- 長度
- 切分split
- 除兩邊空白strip
- 成員運算in not in
- for循環
- 需要掌握
- lstrip/rstrip:左/右除空白
- rsplit:從右開始切割
- upper/lower:大寫/小寫
- startstwith/endswith:以某開頭/以某結尾
- join:連接列表為字符串
- replace:替換字符
- isdigit:判斷是否為數字
- 了解
- find/rfind/index/rindex/count:查找/從右開始查找/索引結果/從右開始索引結果/計數
- center/ljust/rjust/zfill:居中填充/居左填充/居右填充/填充0
- expantabs:擴展tab鍵
- capitalize/swapcase/title:大寫/大小寫轉換/首字母大寫
- is系列:略
- 優先掌握
- 多個值or一個值:一個值
- 有序or無序:有序
- 可變or不可變:不可變
3.3 列表類型內置方法
- 作用:多個女朋友/
- 定義方式:[]內用逗號隔開多個任意數據類型的元素
friends_list = ['longzeluola','canglaoshi','qiaobenai','nick']
lis = list('abcd')
- 方法:
- 優先掌握
- 索引取值(即可取又可改)
- 切片
- 長度
- append
- 成員運算
- for循環
- 需要掌握
- count:元素個數計數
- remove:移除元素
- reverse:反轉列表
- pop:刪除元素
- insert:插入元素
- sort:列表排序
- index:索引元素
- del:刪除元素
- extend:擴展列表
- clear:清除列表
- 優先掌握
- 多個值or一個值:多個值
- 有序or無序:有序
- 可變or不可變:可變
3.4 元祖類型內置方法
- 作用:類似於列表,可以取不可以存
- 定義方式:
friends_tuple = ('longzeluola','canglaoshi','qiaobenai','nick')
tup = tuple('abcd')
- 方法
- 優先掌握
- 索引取值(無法更改)
- 切片
- 長度
- 成員運算
- for循環
- count:元素個數計數
- index:元素位置索引
- 優先掌握
- 多個值or一個值:多個值
- 有序or無序:有序
- 可變or不可變:無可變不可變這一說
3.5 字典類型內置方法
- 作用:值太多列表存容易,取麻煩時使用字典
- 定義方式:
nick_info_dict = {
'name':'nick',
'height':180,
'weight':140,
'hobby_list':['read','run','music','fishing','programming','coding','debugging']
}
for k,v in nick_info_dict.items():
print(k,v)
- 方法
- 優先掌握
- 按鍵取值
- 長度
- keys/values/items
- for循環
- 成員運算
- 需要掌握
- pop:刪除元素
- fromkeys:由一個列表生成一個字典,默認值為None
- setdefault:有指定key不會改變值;無指定key則改變值
- get:通過key獲取value,無key默認獲取None
- update:擴展字典
- del:刪除字典鍵值對
- 優先掌握
- 多個值or一個值:多個值
- 有序or無序:無序
- 可變or不可變:可變
3.6 集合類型內置方法
- 作用:存多個值,為了集合之間做運算
- 定義方式:
s = set()
s = {1,2,3,4,5,1}
- 方法:
- 優先掌握
- 去重
- 並集 |
- 交集 &
- 差集 -
- 對稱差集 ^
- 父集 > >=
- 子集 <&emsp;<=
==
- 需要掌握
- add:添加元素
- difference_update:更新該集合沒有的元素
- isdisjoint:如果兩個元素交集為空返回True,否則返回False
- remove:移除元素 # 值不存在會報錯
- discard :移除元素 # 不會報錯
- 優先掌握
- 多個值or一個值:多個值
- 有序or無序:無序
- 可變or不可變:可變
3.7 布爾類型
- 作用:一般用於判斷,除了0/None/空/False自帶布爾值為False,其他的數據類型自帶布爾值為True
四、數據類型分類
4.1 按值個數
一個值 | 多個值 |
---|---|
整型/浮點型/字符串 | 列表/元祖/字典/集合/ |
4.2 按有序無序
有序 | 無序 |
---|---|
字符串/列表/元祖 | 字典/集合 |
4.3 按可變不可變
可變 | 不可變 |
---|---|
列表/字典/集合 | 整型/浮點型/字符串 |