18. 內建函式

hbutmeng發表於2024-08-08

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個

frozenset() 建立一個凍結的集合,凍結的集合不能進行新增和刪除操作
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

compile() 將字串型別的程式碼編碼,生成的物件能呼叫eval函式或exec函式進行求值
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]

相關文章