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个

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]

 

posted @ 2024-08-08 00:40  hbutmeng  阅读(9)  评论(0编辑  收藏  举报