18. 内置函数
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]