18.07.19(內置函數)
https://www.processon.com/mindmap/5b5071bee4b0f8477d8ae4c3
內置函數分為作用域相關(2).叠代器和生成器相關(3).其他(12).面向對象(9).基礎類型相關(38).反射相關(4).
一.作用域相關
locals() 返回當前作用域中的名字
glogals() 返回全局作用域中的名字
二.叠代器和生成器相關:
range() 生成數據
next() 叠代器向下執行一次,內部實際使用了__next__()方法返回叠代器的下一個項目
iter() 獲取叠代器,內部實際使用的是__iter__()方法獲取叠代器
三.其他相關
1.字符串類型代碼的執行
eval() 執行字符串類型的代碼.並返回最終結果
例:
s = input("請輸入:")
print(eval(s))
結果:
請輸入:5+8+9
22
exec() 執行字符串類型的代碼
例:
s ="""
for i in range(5):
print(i)
"""
print(exec(s))
結果:
0
1
2
3
4
None #執行print不返回內容
例:
exec ("""
for i in range(5):
print(i)
""")
結果:
0
1
2
3
4
compile()將字符串類型的代碼變異.代碼對象能夠通過exec來執行或者eval進行求值
compile不會執行代碼用exec或者eval去執行代碼
compile()有三個參數:(1)要執行的代碼,動態代碼片段
(2)文件名,代碼存放的文件名,當傳入第一個參數時,第二個參數給個空就行
(3)模式有三種模式:exec(一般放一些流程語句)
eval(只存放一個求值表達式)
single(存放的代碼有交互的時候)
例:
code1 = "for i in range(5):print(i)"
c1 = compile(code1,"",mode="exec")
exec(c1)
print(c1)
結果:
0
1
2
3
4
<code object <module> at 0x00000261F3E70300, file "", line 1>
例:
code2 = "1+2+5+3"
c2 = compile(code2,"",mode="eval")
a = eval(c2)
print(a) ==>11
例:
code3 = "name = input(‘請輸入名字:‘)"
c3 = compile(code3,"",mode="single")
exec(c3)
print(name)
結果:
請輸入名字:宋江
宋江
2.輸入輸出相關
input() 獲取用戶輸入的內容
print() 打印輸出
3.內存相關
hash() 獲取到對象的哈希值(int.str.bool.tuple)
id() 獲取到對象的內存地址
4.文件操作相關
open() 用於打開一個文件,創建一個文件句柄
5.模塊相關
__import__() 用於動態加載類和函數
6.幫助
help() 函數用於查看函數或模塊用途的詳細說明
7.調用相關
callable() 用於檢查一個對象是否可調用的.如果返回True,對象有可能調用;如果返回False,對象一定不會被調用
8.查看內置屬性
dir() 查看對象的內置屬性,訪問的是對象中的__dir__()方法
四.基礎數據相關
1.數字相關
(1)數據類型
bool() 將給定的數據轉換成bool值.如果不給值.返回False
int() 將給定的數據轉換成int值.不給值,返回0
float() 將給定的數據轉換成float值.也就是小數
complex() 創建一個復數.第一個參數為實部,第二個參數為虛部.或者第一個參數用字符串來描述
(2)進制轉換
bin() 將給的參數轉換成二進制
otc() 將給的參數轉換成八進制
hex() 將給的參數轉換成十六進制
(3)數學運算
abs() 返回絕對值
divmode() 返回商和余
round() 四舍五入
pow(a,b) 求a的b次冪,如果有三個參數.則求完次冪後的第三個數取余
sum() 求和
min() 求最小值
max() 求最大值
2.數據結構相關
(1)序列
列表和元組
list() 將一個可叠代對象轉換成列表
tuple() 將一個可叠代對象轉換成元組
相關內置函數
reverse() 將一個序列翻轉,返回翻轉序列的叠代器
slice() 列表的切片
字符串
str() 將數據轉化成字符串
format() 與具體數據相關,用於計算各種小數,精算
例:字符串
print(format(‘text‘,‘<20‘)) ==>text #左對齊
print(format(‘text‘,‘>20‘)) ==> text #右對齊
print(format(‘text‘,‘^20‘)) ==> text #居中
例:數值
print(format(3,‘b‘)) #二進制 ==>11
print(format(97,‘c‘)) #轉換成unicode字符 ==>a
print(format(11,‘d‘)) #十進制 ==>11
print(format(11,‘o‘)) #八進制 ==>13
print(format(11,‘x‘)) #十六進制(小寫字母) ==>b
print(format(11,‘X‘)) #十六進制(大寫字母) ==>B
print(format(11,‘n‘)) #和d一樣 ==>11
print(format(11)) #和d一樣 ==>11
例:浮點數
print(format(123456789,‘e‘)) #科學計算法,默認保留6位小數 ==>1.234568e+08
print(format(123456789,‘0.2e‘)) #科學計數法,保留2位小數(小寫) ==>1.23e+08
print(format(123456789,‘0.2E‘)) #科學計數法,保留2位小數(大寫) ==>1.23E+08
print(format(123456789,‘f‘)) #小數點計數法.保留6位小數 ==>123456789.000000
print(format(123456789,‘.2f‘)) #小數點計算法.保留2位小數 ==>123456789.00
print(format(123456789,‘0.10f‘)) #小數點計算法.保留10位小數 ==>123456789.0000000000
print(format(123456789e+10000,‘F‘)) #小數點計數法 ==>INF
bytes() 把字符串轉化成bytes類型 參考前面編碼和解碼
bytearray() 返回一個新字節數組.這個數字裏的元素是可變的,並且每個元素的1取值範圍是[0,256)
memoryview() 查看bytes在內存中的情況
ord() 輸入字符找帶字符編碼的位置
chr() 輸入位置數字找出對應的字符
ascii() 是ascii碼中的返回值,不是就返回\u...
repr() 返回一個對象的string字符串形式
(2)數據結構
dict() 創建一個字典
set() 創建一個集合
frozenset() 創建一個凍結集合.凍結的集合不能進行添加和刪除操作
(3)相關內置函數
len() 返回一個對象中的元素個數
sorted() 對可叠代對象進行排序操作
enumerate() 獲取集合的枚舉對象
例:
lst = ["a","b","c","d"]
for i,el in enumerate(lst): #索引默認從0開始,可以更改
print(i,el)
結果:
0 a
1 b
2 c
3 d
all() 可叠代對象中全部是True,結果才是True 和and相同
any() 可叠代對象中有一個是True,結果才是True 和or相同
zip() 函數用於將可叠代的對象作為參數,將對象中對應的元素打包成一個個元組,然後返回由這些元組組成的列表,如果各個叠代器的元素個數不一致,則返回列表長度與最短的對象相同.
例:
l1 = [1,2,3,4]
l2 = [5,6,7,8]
l3 = ["a","b","c"]
for i in zip(l1,l2,l3):
print(i)
結果:
(1, 5, ‘a‘)
(2, 6, ‘b‘)
(3, 7, ‘c‘)
filter() 過濾函數
map() 會根據提供的函數的指定序列做映射
18.07.19(內置函數)