1. 概念
內建函式是python直譯器自帶的函式,不需要匯入模組就能使用,69個
官網介紹https://docs.python.org/3/library/functions.html#staticmethod
2. 資料型別轉換 8個
(1)整數型別轉換 int
# 將內容為整數的字串轉換為整型
a = '666'
print(int(a)) # 666
(2)浮點數型別轉換 float
# 將內容為整數的字串或者整型轉換為浮點型
a = '9'
print(float(a)) # 9.0
b = 9
print(float(b)) # 9.0
(3)字串型別轉換 str
# 將整型轉換為字串
a = 9
print(str(a) + '1') # 91
(4)布林型別轉換 bool
a = []
print(bool(a), type(bool(a))) # False <class 'bool'>
b = 0
print(bool(b), type(bool(b))) # False <class 'bool'>
c = None
print(bool(c), type(bool(c))) # False <class 'bool'>
d = 1
print(bool(d), type(bool(d))) # True <class 'bool'>
(5)列表型別轉換 list
list( )可以將一個可迭代物件轉換成列表
print(list('leo')) # ['l', 'e', 'o']
(6)元組型別轉換 tuple
tuple( )可以將一個可迭代物件轉換成元組
print(tuple('點球杯')) # ('點', '球', '杯')
(7)字典型別轉換 dict
dict( )函式可以處理可迭代物件,用鍵值對初始化字典
a = dict([(1, 'one'), (2, 'two'), (3, 'three')])
print(a) # {1: 'one', 2: 'two', 3: 'three'}
(8) 集合型別轉換 set
set( )函式用於建立集合,並自動去除重複元素
a = [1, 1, 2, 2, 3, 3]
print(set(a)) # {1, 2, 3}
3. 進位制轉換 3個
(1)十進位制轉二進位制 bin
a = 999
print(bin(a)) # 0b1111100111
(2)十進位制轉八進位制 oct
a = 999
print(oct(a)) # 0o1747
(3)十進位制轉十六進位制 hex
a = 999
print(hex(a)) # 0x3e7
4. 數學運算 8個
(1)獲取絕對值 abs
a = -123
b = -2
print(abs(a)) # 123
print(abs(b)) # 2
(2) 獲取商和餘數 divmod
語法:divmod(被除數, 除數)
res = divmod(11, 3)
print(res) # (3, 2) 商, 餘數
(3)四捨五入 round
print(round(2.501)) # 3 第一位小數5後面還有值就能進一位
print(round(2.5)) # 2 第一位小數後面5後面沒有值就不能進位
# round函式新增第二個引數用來控制小數點的位數
print(round(3.051, 1)) # 3.1
print(round(3.05, 1)) # 3.0
(4) 求冪 pow
# 常規求冪的方法 **
print(2 ** 4) # 16
# pow(x, y[, z]) z為可選引數
# 引數介紹:
# x — 數值表示式(整數或者浮點數);
# y — 數值表示式(整數或者浮點數);
# z — 數值表示式(整數或者浮點數),預設不設定z值;
#
# 返回值:返回 xy(x的y次方)的值;如果設定了z值,則再對結果進行取餘數,其結果等效於pow(x,y) %z
print(pow(2, 4)) # 16
print(pow(2, 4, 3)) # 1
print(pow(2, 4.0)) # 16.0
(5)求和 sum
sum函式內要放入可迭代物件
print(sum([1, 2, 3])) # 6
(6)最小值 min
min函式里面不用放入可迭代物件
print(min(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) # 1
(7)最大值 max
max函式里面不用放入可迭代物件
print(max(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)) # 10
(8)複數轉換 complex
a = complex(2, 3)
b = complex(4, 5)
print(a) # (2+3j)
print(b) # (4+5j)
print(a + b) # (6+8j)
5. 資料結構相關函式 18個
5.1 序列相關 5個
5.11 反轉 reversed
reversed( )函式將一個序列反轉,返回反轉序列的可迭代物件
a = 'lionel'
b = reversed(a)
print(b, type(b)) # <reversed object at 0x000002358256A770> <class 'reversed'>
print(list(b)) # ['l', 'e', 'n', 'o', 'i', 'l']
5.12 切片 slice
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print(a[0:3]) # [1, 2, 3]
print(a[slice(0, 3)]) # [1, 2, 3]
5.13 計算長度 len
len( )函式返回物件中元素的個數
print(len('lionel')) # 6
5.14 排序 sorted
語法:sorted(Iterable, key=函式, reverse=False)
Iterable: 可迭代物件
key: 排序規則、排序函式, 在sorted內部會將可迭代物件中的每一個元素傳遞給這個函式的引數. 根據函式運算的結果進行排序
reverse: True倒敘,False正序
a = [11, 9, 2, 5, 3, 4]
print(sorted(a)) # 預設正序 [2, 3, 4, 5, 9, 11]
print(sorted(a, reverse=True)) # 倒敘 [11, 9, 5, 4, 3, 2]
print(sorted(a, reverse=False)) # 正序 [2, 3, 4, 5, 9, 11]
a = ['messi', 'ronaldo', 'neymar', 'leo']
def f1(element):
return len(element)
# 將可迭代物件a中的每個元素傳入f1,然後根據f1返回的結果進行排序
print(sorted(a, key=f1)) # ['leo', 'messi', 'neymar', 'ronaldo']
5.15 列舉 enumerate
a = ['messi', 'ronaldo', 'neymar', 'leo']
# 該函式可以同時取出索引和元素
for index, element in enumerate(a):
print(index, element)
# 0 messi
# 1 ronaldo
# 2 neymar
# 3 leo
# 定義起始的索引 從1開始
for index, element in enumerate(a, 1): # 或寫成start=1
print(index, element)
# 1 messi
# 2 ronaldo
# 3 neymar
# 4 leo
5.2 字串的4種操作方法
5.21 格式化輸出 format
字串對齊
a = 'leomessi'
print(format(a, "^20")) # 居中對齊, 引數注意要考慮字串的長度
print(format(a, "<20")) # 左對齊
print(format(a, ">20")) # 右對齊
# leomessi
# leomessi
# leomessi
進位制轉換
print(format(99, 'b')) # 十進位制轉成二進位制 1100011
print(format(0b1100011, 'd')) # 將一個數轉成十進位制 99
print(format(99, 'o')) # 十進位制轉成八進位制 143
print(format(95, 'x')) # 十進位制轉成十六進位制(小寫字母) 5f
print(format(95, 'X')) # 十進位制轉成十六進位制(大寫字母) 5F
print(format(95, 'c')) # 轉成ASCII碼錶中對應的編碼 _
科學計數法
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(1.23456789, 'f')) # 小數點計數法. 保留6位小數:1.234568
print(format(1.23456789, '0.2f')) # 小數點計數法. 保留2位小數:1.23
print(format(1.23456789, '0.10f')) # 小數點計數法. 保留10位小數:1.2345678900
print(format(1.23456789e+3, 'F')) # 小數點計數法. 很大的時候輸出INF:1234.567890
5.22 字串轉二進位制 bytes
python中的bytes型別表示一種二進位制資料形式
bytes( )函式把字串轉換成bytes型別二進位制
a = '足球巨星'
print(a.encode()) # b'\xe8\xb6\xb3\xe7\x90\x83\xe5\xb7\xa8\xe6\x98\x9f'
print(bytes(a, encoding='utf-8')) # b'\xe8\xb6\xb3\xe7\x90\x83\xe5\xb7\xa8\xe6\x98\x9f'
5.23 獲取位元組陣列 bytearray
bytearray( )函式返回一個位元組陣列,這個陣列的元素是可變的,並且每個元素的值的範圍是[0,256)
a = bytearray('點球杯', encoding='utf-8')
print(a) # bytearray(b'\xe7\x82\xb9\xe7\x90\x83\xe6\x9d\xaf')
a[0] = 65 # 將ASCII碼錶中位置65的A賦值給a[0]
a[1] = 66
a[2] = 67
print(a.decode('utf-8')) # ABC球杯
5.24 返回字串的原始格式 repr
a = '點球杯\n球王%s個\t球' % 10
print(a)
# 點球杯
# 球王10個 球
print(repr(a))
# '點球杯\n球王10個\t球'
5.3 字元編碼 3個
5.31 根據字元找編碼表中的位置 ord
print(ord('1')) # 49 數字1在編碼表中的位置
print(ord('一')) # 19968 漢字一在編碼表中的位置
5.32 根據編碼表中的位置找字元 chr
print(chr(95)) # _
print(chr(19995)) # 叢
5.33 返回表示物件的ASCII碼字串 ascii
print(ascii('aaa')) # 'aaa'
print(ascii('1')) # '1'
5.4 凍結資料集合 1個
a = {1, 2, 3}
a.add(4)
print(a) # {1, 2, 3, 4}
b = frozenset(a)
print(b, type(b)) # frozenset({1, 2, 3, 4}) <class 'frozenset'>
b.add(9)
5.5 判斷條件 2個
5.51 所有為真 all
all( ) 可迭代物件中全部是True, 結果才是True
print(all([1, 0, 3, None])) # False
5.52 任意為真 any
any( ) 可迭代物件中有一個是True, 結果就是True
print(any([1, 0, 3, None])) # True
5.6 高階函式 3個
5.6.1 打包函式 zip
打包函式又稱拉鍊函式
將可迭代物件作為引數,物件中對應的元素打包成一個元組,返回由這些元組組成的列表
如果各個迭代器的元素個數不一致, 則返回列表長度與最短的物件相同
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
b = ['messi', 'ronaldo', 'neymar']
c = ['法甲', '英超', '德甲', '美職聯']
print(zip(a, b, c)) # <zip object at 0x000001E8B404D6C0>
print(list(zip(a, b, c))) # [(1, 'messi', '法甲'), (2, 'ronaldo', '英超'), (3, 'neymar', '德甲')]
5.6.2 過濾函式 filter
語法:fiter(function. Iterable)
在filter中會自動的把iterable中的元素傳遞給函式function,然後根據function返回的True或者False來判斷是否保留留此項資料
# 按照語法的常規寫法
def f(x): # 判斷偶數
return x % 2 == 0
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
b = filter(f, a) # 生成的是可迭代物件
print(b) # <filter object at 0x00000264EBC99C60>
print(list(b)) # [2, 4, 6, 8, 10]
# 匿名函式寫法
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(filter(lambda x: x % 2 == 0, a)) # <filter object at 0x00000226249FA110>
print(list(filter(lambda x: x % 2 == 0, a))) # [2, 4, 6, 8, 10]
5.6.3 對映函式 map
語法 : map(function, iterable)
map可以將可迭代物件中的每一個元素傳給function函式依次執行
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]
def f(x):
return x ** 2
print(map(f, a)) # <map object at 0x0000029C94CBA110>
print(list(map(f, a))) # [1, 4, 9, 16, 25, 36, 49, 64, 81]
6. 作用域函式 2個
locals( ) 返回區域性名稱空間的名字
globals( ) 返回全域性名稱空間的名字
a = 1
def f():
b = 2
print(locals()) # {'b': 2}
print(globals())
f()
7. 迭代器、生成器函式 3個
7.1 迴圈生成資料 range
range函式生成一個可迭代的物件
print(range(0, 3)) # range(0, 3)
7.2 生成迭代器 iter
a = 'lionel'
b = iter(a)
print(b, type(b))
# <str_iterator object at 0x000002328885A770> <class 'str_iterator'>
7.3 迭代器取值 next
a = 'lionel'
b = iter(a)
print(b, type(b))
# <str_iterator object at 0x000002328885A770> <class 'str_iterator'>
print(next(b)) # l
8. 執行字串型別程式碼的函式 3個
8.1 指定指令並返回結果 eval
eval( ) 函式執行字串型別的程式碼,並返回最終結果
a = input('請輸入兩個數相加,如x+y:')
print(eval(a))
8.2 指定指令不返回結果 exec
exec( ) 執行字串型別的程式碼exec(input('請輸入一個數字:'))
print(exec(input('請輸入一個小寫字母:')))
8.3 編碼指令 compile
a = '1+2+3'
b = compile(a, '', 'exec')
print(exec(b)) # None
c = '4+5+6'
d = compile(c, '', 'eval')
print(eval(d)) # 15
9. 演算法函式 1個
hash( )函式
生成不可變型別的雜湊值 int, str, bool, tuple
可變型別不能呼叫雜湊函式
a = '123'
b = [1, 2, 3]
print(hash(a)) # 5003076446890973907
print(hash(b)) # TypeError: unhashable type: 'list'
10. 幫助函式 1個
help( ) 函式用於檢視函式或模組用途的詳細說明
print(help(print))
11. 是否可呼叫 1個
callable函式檢查一個物件是否可呼叫,可呼叫返回True,不可呼叫返回False
a = 1
def f(x):
return x ** 2
print(callable(a)) # False
print(callable(f)) # True
12. 檢視內建屬性 1個
dir( )函式檢視物件的內建屬性,訪問的是物件中的 __dir__() 方法
13. 記憶體相關 2個
13.1 檢視記憶體屬性 vars
13.2 記憶體檢視物件 memoryview
a = memoryview(bytearray('點球杯', 'utf-8'))
print(list(a)) # [231, 130, 185, 231, 144, 131, 230, 157, 175]