一、作用域相關-2個 1、locals() 參數是空 返回當前位置作用域的所有變數,返回的是字典 當前位置:函數內,返回局部變數 當前位置:函數外,返回全局變數 2、globals() 參數是空 返回全局變數,返回的是字典二、迭代器-生成器相關--3個 1、range() 生成數字數據,例如:等差數 ...
一、作用域相關-2個
1、locals()
參數是空
返回當前位置作用域的所有變數,返回的是字典
當前位置:函數內,返回局部變數
當前位置:函數外,返回全局變數
2、globals()
參數是空
返回全局變數,返回的是字典
二、迭代器-生成器相關--3個
1、range()
生成數字數據,例如:等差數列
參數是數字
2、next()
參數是迭代器-Iterator,返回的是迭代器的一個取值,只能向下取值,不能後退
和迭代器.__next__()等效--內部原理
3、iter()
用於把Iterable轉換成迭代器
參數是Iterable,返回的是迭代器,內部調用的是Iterable.__iter__()
可迭代類型的(可迭代的):Iterable
包括:str list tuple dict set range() open()
迭代器:Iterator
Iterator = iter(Iterable) 或者
Iterator = Iterable.__iter__()
註意:列表是Iterable,而不是Iterator
三、其他-12個
1、字元串類型代碼的執行--3個
1、eval()
作用:用於實現計算器,字元串表達式的執行
參數:字元串表達式 比如:'1+3'
返回:int--計算結果
應用場景:有返回值的字元串形式的代碼-
比如:計算器、'[1,2]'或者"{'name':'jack'}"去掉引號,json字元串轉成字典
2、exec()
作用:執行字元串中的代碼
參數:字元串代碼
返回:None,沒有返回值
應用場景:沒有返回值的字元串形式的代碼-比如:函數、for迴圈等
3、compile()
作用:將字元串中的代碼進行編譯,將編譯後的結果存入變數,然後把變數交給eval()或者exec()執行
參數:
參數1:字元串形式的代碼
參數2:py文件-如果參數1傳了,參數2是空字元串""即可
參數3:模式有3個
1、'eval' 計算字元串表達式
2、'exec' 迴圈或者if語句或者函數
3、'single' 有交互的時候,包含input
註意:single這個模式只能用於input,不能在input之外加上其他任何語句,
比如:有print不行,否則報錯
返回:
應用場景:
1、有返回值的字元串形式的代碼-用eval()
2、沒有返回值的字元串形式的代碼-用exec()
3、compile()用的較少
2、輸入輸出--2個
1、input()
作用:獲取用戶鍵盤輸入的內容
參數:字元串,比如:用於提示用戶輸入
返回:字元串
註意:用戶輸入的是數字1,返回的是字元串'1'
這裡的字元串'1'如果需要用於計算,就需要先轉換成int,否則報錯
應用場景:有交互的時候
2、print()
作用:列印輸出
參數:變數-必選參數
返回:變數的值
應用場景:一步步調試程式,列印變數
3、記憶體相關-2個
1、id()
作用:獲取到對象的記憶體地址
參數:對象、變數
返回:記憶體地址
應用場景:可以用於確定兩個變數是否指向同一個對象
a1 is a2 如果返回的是True
a1和a2都指向了同一個記憶體空間,a1和a2分別是同一個記憶體空間的不同別名
a1和a2並沒有在記憶體中開闢2個不同的記憶體空間
2、hash()
作用:獲取到對象的哈希值
參數:不可變對象(int str bool tuple)
返回:int(19位數字或者19位數字前面加一個-)
應用場景:
可變對象(不可哈希的):list dict set
不可變對象(可哈希的):int str bool tuple frozenset
只有不可變對象才有哈希值,可變對象是沒有哈希值的
字典的key必須是不可變對象(可哈希的)
4、文件操作相關-1個
open()
作用:獲取文件對象-文件句柄(類比:鍋上的鍋炳,鍋炳可以控制鍋;文件句柄可以操作文件)
參數:
參數1:文件全路徑(包括文件名字)
參數2:模式mode,預設是只讀r
參數3:編碼方式,預設是None(即和操作系統保持一致,中文操作系統是gbk),
一般需要指定utf-8
返回:文件對象
應用場景:
讀寫操作文件(包括文本文件txt csv和二進位文件excel)
相對路徑小結
..\ 表示上一級目錄 例如:path1 = r'..\code1.py'
..\..\表示上上級目錄 例如:path2 = r'..\..\test.py' 這裡的r是去掉轉義
..\..\..\表示上3級目錄 例如:path3 = r'..\..\..\zuoye.py'
5、模塊相關--1個
__import__()
用於動態載入類和函數
常用的是:import 導包
6、幫助--1個
help()
用於查看函數或者模塊用途的詳細說明
7、調用--1個
callable()
作用:用於檢查一個對象是否是可以被調用的
如果是可以被調用的,比如:函數、類,就返回True
如果不是可以被調用的,比如:str int 類的對象,就返回False
參數:str int 類的對象、函數名、類名
返回:bool值 True或者False
應用場景:
8、查看內置屬性--1個
dir()
作用:獲取參數的屬性、方法列表
參數:列表、字典等任意對象
返回:
返回的是一個列表
列表中是該參數的屬性、方法列表
應用場景:
可以用於查看列表、字典等對象的屬性和方法列表
比如:想查看列表中有多少內置方法,可以被使用
四、基礎數據類型相關--38個
1、和數字相關
1、數字類型
1、bool()
作用:將給定的參數,轉換成布爾值,True或者False
參數:
False:None 0 '' [] () {}
數字0、空字元串、空列表、空元組、空字典
True:1或者其他所有非空的(包含空格 '\r' '\n' '\t'等)
返回:
True
False
應用場景:
備註:
1、bool是int的子類
2、如果不給參數,返回的是False
2、int()
作用:將給定的參數(小數或者字元串)轉換成int值
參數:
小數:小數會直接取整,而不是四捨五入
字元串:只能將字元串形式的數字,轉換成數字,比如:'12'轉成12
而不能把'a'轉成int,會報錯
返回:
int值
應用場景:
備註:
1、如果不給參數,返回的是0
2、參數2不寫,預設是base=10;還可以按照其他進位,比如base=8
3、float()
作用:將給定的參數(整數int或者字元串形式的小數)轉換成小數
參數:
整數int
字元串形式的小數
返回:
小數
應用場景:
備註:
如果不給參數,返回的是0.0
4、complex()
作用:將給定的參數,轉換成複數
參數:
參數1:實部
參數2:虛部
返回:
複數
應用場景:
備註:
如果不給參數,返回的是0j
2、進位轉換
1、bin()
作用:將給定的參數,轉換成二進位
參數:十進位數字,整數int,不能是小數
返回:二進位的字元串-0b開頭,而不是二進位數字
應用場景:
備註:
2、oct()
作用:將給定的參數,轉換成八進位
參數:十進位數字,整數int,不能是小數
返回:八進位的字元串-0o開頭,而不是八進位數字
應用場景:
備註:
3、hex()
作用:將給定的參數,轉換成十六進位
參數:十進位數字,整數int,不能是小數
返回:十六進位的字元串-0x開頭,而不是十六進位數字
應用場景:
備註:
3、數學運算
1、abs()
作用:將給定的參數,轉換成絕對值
參數:int或者float
返回:正數--去掉了負號
應用場景:
備註:
2、divmod()
作用:返回商和餘數
參數:
參數1:被除數
參數2:除數
返回:商和餘數組成的元組 (a//b,a%b)
應用場景:
備註:
3、round()
作用:返回小數的四捨五入
參數:
參數1:小數
參數2:保留幾位小數
返回:小數
應用場景:小數點後位數較多,保留幾位小數
備註:
4、pow()
作用:求冪
參數:
參數1:a
參數2:b
返回:返回a的b次冪,等效於a**b
應用場景:
備註:
5、sum()
作用:求和
參數:
參數1:Iterable:列表、元組、字典等
參數2:不寫預設是0,
返回:返回Iterable中元素的和,如果參數2是3,最後的和還需要加3
應用場景:用於計算累加,列表中元素的和
備註:
6、min()
作用:求最小值
參數:
1、多個參數:可以是多個數字
2、一個參數:多個數字組成的列表
返回:最小值int或者float
應用場景:
備註:
7、max()
作用:求最大值
參數:
1、多個參數:可以是多個數字
2、一個參數:多個數字組成的列表
返回:最大值int或者float
應用場景:
備註:
2、和數據結構相關
1、數據集合
1、字典
dict()
作用:創建一個字典
參數:
方式1:關鍵字
方式2:Iterable
方式3:映射函數
返回:字典
備註:
2、集合
1 set()
作用:創建一個集合,把參數轉換成集合
參數:
Iterable
返回:集合(無序,去重)
備註:集合的本質是沒有value,只有key的字典
例子:
s1 = 'bob'
s2 = 'alexab'
set1 = set(s1) #把字元串轉換成集合
print(set1) #{'b', 'o'} #去重和無序
set2 = set(s2)
print(set2) #{'b', 'x', 'l', 'e', 'a'}
print(set1 & set2) #{'b'} 求交集 (並且,兩個集合都有的)
print(set1 | set2) #{'x', 'o', 'e', 'a', 'l', 'b'} 求並集(合集)
print(set2 - set1) #{'l', 'e', 'a', 'x'} 求差集
2 frozenset()
作用:創建一個不可變(凍結)的集合
參數:
Iterable:列表、元組、字典
返回:
不可變的集合
備註:凍結的意思是:元素不能添加和刪除
例子:
s1 = 'bob'
print(frozenset(s1)) #創建一個不可變的集合(不能添加或者刪除元素)
#類比:set和frozenset list和tuple
#frozenset({'b', 'o'})
2、相關內置函數
1 len()
作用:返回一個對象中元素的個數
參數:
列表、元組、字元串等Iterable
返回:
個數int
備註:
例子:
li1 = [1,2]
print(len(li1)) #2 列表中元素的個數
2 sorted()
作用:對可迭代對象進行排序
參數:
可迭代的對象Iterable
返回:
排序後的可迭代對象
備註:
sort()和sorted()的區別
1 sort()是列表的內置方法,排序的同時,將原列表修改了
2 sorted()的參數不僅僅是列表,還可以是字元串等其他Iterable的對象
排序的同時,新產生了一個新的排序後的對象,原對象沒有任何改變
例子:
li2 = [1,3,2]
li3 = sorted(li2) #reverse不寫預設是False 升序
print(li3) #[1, 2, 3]
li4 = sorted(li2,reverse = True) #倒序
print(li4) #[3, 2, 1]
li2 = [1,3,2]
li5 = sorted(li2,key=lambda x:x*-1) #通過參數key 進行倒序
#key參數還可以用於指定對象中的一個元素進行排序
print(li5) #[3, 2, 1]
li6 = sorted(li2,key=lambda x:x)
print(li6) #[1, 2, 3] #通過參數key 進行升序
li2 = [1,3,2]
li2.sort() #這裡返回值是None 註意
print(li2) #[1, 2, 3]
3 enumerate()
作用:將一個可迭代對象中元素的索引號和元素本身作為一個元組,元組作為新列表的元素
參數:
iterable
返回:
枚舉對象
備註:
4 all()
作用:可迭代對象中元素全部是True,結果才是True
參數:
Iterable
元素中含有0 空字元串'' None Fasle ,結果就是False
註意:列表或者元組的元素是空白,結果是True
返回:
布爾值 bool True或者False
備註:
5 any()
作用:可迭代對象中元素有一個是True,結果就是True
參數:
Iterable
元素中:0 空字元串'' None Fasle ,上述4個元素是False,其餘都是True
返回:
布爾值 bool True或者False
備註:
all()和any()的區別
1 前者是iterable中的元素全部是True,結果才是True
2 後者是iterable中的元素只要有一個是True,結果就是True
3、元素中0 '' None False是False,其餘都是True
4、註意點
空列表(列表中的元素是空白)、空元組、空字元串,all()函數返回True--特殊點
空列表(列表中的元素是空白)、空元組、空字元串,any()函數返回False
6 zip()
作用:把iterable1和iterable2的第一個元素組成一個元組,
把iterable1和iterable2的第2個元素組成一個元組,.。。元組作為列表的元素
以iterable中最少的元素為準
參數:
參數1:可迭代對象
參數2:可迭代對象
返回:
迭代器
備註:
例子:
li1 = [1,2]
li2 = [3,4]
ret1 = zip(li1,li2)
print(ret1) #<zip object at 0x00000021A24E4788>
print(list(ret1)) #[(1, 3), (2, 4)]
7 filter()
8 map()
3、序列
1、列表和元組--2個
1 list()
作用:將可迭代對象-iterable轉換成列表
參數:
可迭代對象-iterable
返回:
列表
備註:
2 tuple()
作用:將可迭代對象-iterable轉換成元組
參數:
可迭代對象-iterable
返回:
元組
備註:
2、相關內置函數--2個
1 reversed()
作用:將一個序列(iterable)反轉,返回一個迭代器
參數:
iterable:str list tuple range()等 dict set open()
返回:
迭代器
備註:
li1 = [1,3,2]
it1 = reversed(li1) #將可迭代對象-iterable的元素進行反轉(註意:反轉不是倒序)
print(it1) #
print(list(it1)) #[2, 3, 1] #迭代器轉換成列表
2 slice()
作用:用於切片,用的較少
推薦:s1[1:5:2] li1[1:5:2]
備註:
字元串或者列表反轉
方法1: 最簡潔
s1[::-1]
li1[::-1]
方法2:
reversed(li1)
reversed(s1)
3、字元串--9個
1 str()
作用:將數據轉換成字元串
參數:
任意對象
返回:
字元串
備註:
2 format()
作用:進行格式化
參數:
參數1:可以是字元串、數字、小數
返回:
字元串
備註:
#01 字元串
print(format('jack','<20')) #字元串左對齊,一共是20個字元
print(format('jack','>20')) #字元串右對齊,一共是20個字元
print(format('jack','^20')) #字元串居中對齊,一共是20個字元,jack左右各8個字元
print('----------------------6-1 format() 字元串')
#02 數值--進位轉換
print(format(3,'b')) #11 十進位數字3轉換成二進位數字11的字元串形式
print(type(format(3,'b'))) #<class 'str'>
print(format(8,'o')) #10 十進位數字8轉換成八進位數字10的字元串形式
print(format(16,'x')) #10 十進位數字16轉換成十六進位數字10的字元串形式
print(format(15,'X')) #F 十進位數字15轉換成十六進位數字F(大寫的)
print(format(97,'c')) #a 十進位數字97轉換成ascii碼表(ascii屬於unicode)中的字母
print('----------------------6-2 format() 進位轉換')
#03 浮點數--小數
print(format(1.2354,'0.2f')) #1.24 保留2位小數,四捨五入
print(type(format(1.2354,'0.2f'))) #<class 'str'>
print(format(12345678,'e')) #1.234568e+07 科學計數法(預設保留6位小數)
print(format(1235567,'0.2e')) #1.24e+06 科學計數法(保留2位小數,e小寫)
print(format(1235567,'0.2E')) #1.24E+06 科學計數法(保留2位小數,e大寫)
print('----------------------6-3 format() 小數')
3 bytes()
作用:把字元串轉換成bytes類型(位元組)
參數:
字元串、整數、iterable
返回:
位元組
備註:
#把字元串轉換成位元組(utf-8編碼)
s1 = '你好'
s2 = 'jack'
li1 = [1,2,3]
print(bytes(s1,encoding='utf-8')) #b'\xe4\xbd\xa0\xe5\xa5\xbd' b開頭表示位元組
#一個漢字(中文字元)是3個位元組--utf-8中
print(bytes(s2,encoding='utf-8')) #b'jack'
#一個英文字母是一個位元組--utf-8中
print(bytes(li1)) #b'\x01\x02\x03'
print('----------------------7-1 bytes()')
b1 = s1.encode() #這裡參數不寫,預設是'utf-8'
print(b1) #b'\xe4\xbd\xa0\xe5\xa5\xbd'
#將中文字元串轉換(編碼-壓縮-加密)成位元組(utf-8)
#中文字元串就是明文,位元組就是密文
s11 = b1.decode() #這裡參數不寫,預設是'utf-8'
print(s11) #你好
#將位元組(utf-8)轉換(解碼-解壓縮-解密)成中文字元串
print('----------------------7-2 bytes()')
4 bytearray()
備註:和bytes有類似,用的較少
5 memoryview()
作用:查詢字元串對應的位元組(utf-8)在記憶體的地址
參數:
字元串對應的位元組
返回:
記憶體的地址
備註:
s1 = 'jack'
print(memoryview(s1.encode('utf-8')))
# print(memoryview(s1)) #報錯 TypeError: memoryview: a bytes-like object is required, not 'str'
#<memory at 0x0000003D28B881C8>
6 ord()
作用:輸入字元,找到字元編碼的位置-ascii,輸出數字
參數:
字元
返回:
數字
備註:
print(ord('a')) #97 #字母a的ascii是97
print(ord('一')) #19968 #中文字元‘一’對應的utf-8的字元編碼的位置是19968
# print(ord('一期')) #報錯 TypeError: ord() expected a character, but string of length 2 found
7 chr()
作用:把數字(字元編碼的位置)轉換成字元
參數:
數字
返回:
字元
備註:
print(chr(65)) #A ascii中65對應的字元是'A'
print(chr(19968)) #一 字元編碼位置是19968對應的字元是'一'
8 ascii()
作用:用於判斷字元是否在ascii中
參數:
參數是ascii表中的字元,就返回參數本身;參數不是ascii表中的字元,就返回\u開頭
返回:
備註:
print(ascii('a')) #'a'
print(ascii('ab')) #'ab'
print(ascii('一')) #'\u4e00'
9 repr()
作用:引號等原封不動的輸出,轉義符不起作用,取字面的意思
參數:
返回:
備註:
s1 = '祖國'
print('我愛%s' % s1) #我愛祖國 占位符
print('我愛%r' % s1) #我愛'祖國' 原封不動的輸出
print('大家好,\n \t 我是jack')
# 大家好,
# 我是jack
print(repr('大家好,\n \t 我是jack'))
#'大家好,\n \t 我是jack' 原封不動的輸出,引號和轉義符都原樣輸出
s1 ='jack' #字元串
print(s1) #jack 不帶引號
print(repr(s1)) #'jack' 帶引號