常见的内置函数
内置函数官方文档
- 截止到python版本3.6.2 ,一共提供了68个内置函数,具体如下
str / int / float / list / dict / set / bool / tuple : 类型强转
| '''当数据符合强转的类型是就可以强转''' |
| |
| |
| str() |
| int() |
| float() |
| list() |
| dict() |
| set() |
| bool() |
| tuple() |
| user = input("用户可以输入内容,并由变量接收") |
| print(user) |
id / type : 变量的三大特征
| txt = 'hello world' |
| print(id(txt)) |
| print(type(txt)) |
abs : 求绝对值
| |
| num = -1.5 |
| print(abs(num)) |
| |
bin / oct /hex : 进制转换
| num = 520 |
| print(bin(num)) |
| print(oct(num)) |
| print(hex(num)) |
divmod : 获取商和余数
| num1 = 9 |
| num2 = 2 |
| print(divmod(num1, num2)) |
| |
| |
| |
| '''如果整除余数就为0''' |
| num1 = 9 |
| num2 = 3 |
| print(divmod(num1, num2)) |
| |
| gross = 1234 |
| every_page = 50 |
| quotients, remainders = divmod(gross, every_page) |
| if remainders != 0: |
| quotients += 1 |
| print(f"总共 {gross} 条信息 共需要 {quotients} 页") |
round : 四舍五入、保留小数位数
| 使用方法:round(number,digits) |
| |
| digits>0,四舍五入到指定的小数位 |
| digits=0, 四舍五入到最接近的整数 |
| digits<0 ,在小数点左侧进行四舍五入 |
| 如果round()函数只有number这个参数,等同于digits=0 |
| 四舍五入规则: |
| |
| 要求保留位数的后一位<=4,则舍去,如5.214保留小数点后两位,结果是5.21 |
| 要求保留位数的后一位“=5”,且该位数后面没有数字,则不进位,如5.215,结果为5.21 |
| 要求保留位数的最后一位“=5”,且该位数后面有数字,则进位,如5.2151,结果为5.22 |
| 要求保留位数的最后一位“>=6”,则进位。如5.216,结果为5.22 |
| '''不填参数默认是0模式,也就是四舍五入到最接近的整数''' |
| print(round(4.5)) |
| |
| print(round(4.51)) |
| |
| print(round(4.516, 2)) |
| |
| print(round(54.12, -1)) |
| |
pow : 数字的幂次方
| ''' |
| 参数介绍: |
| x — 数值表达式(整数或者浮点数); |
| y — 数值表达式(整数或者浮点数); |
| z — 数值表达式(整数或者浮点数),默认不设置z值; |
| |
| 返回值:返回 xy(x的y次方)的值;如果设置了z值,则再对结果进行取模,其结果等效于pow(x,y) %z; |
| ''' |
| |
| pow(x, y[, z]) |
| '''等价于 x ** y ''' |
| print(pow(2, 10)) |
| print(pow(2.3, 3)) |
| print(pow(2.3, 3.3)) |
| print(2.3 ** 3.3) |
| |
| '''当有3个参数时 等价于 x ** y % ''' |
| print(pow(2, 3, 3)) |
| print(8 % 3) |
sum : 求和
| print(sum([1, 2, 3])) |
| |
| print(sum(['1', '2', '3'])) |
| |
| |
| '''可以设置底数''' |
| print(sum([1, 2, 3], start=10)) |
max / min : 求最大值和最小值
| print(max([1, 2, 3])) |
| print(min([1, 2, 3])) |
| '''比较文字长度''' |
| strings = ['apple', 'banana', 'kiwi', 'orange'] |
| print(max(strings, key=len)) |
| |
| '''比较pow的余数值''' |
| |
| print(max([1, 2, 3], key=lambda x: pow(x, x + 1, 3))) |
| print(1 ** 2 % 3) |
| print(2 ** 3 % 3) |
| print(3 ** 4 % 3) |
| |
| print(min([1, 2, 3], key=lambda x: pow(x, x + 1, 3))) |
| |
| def dict_max(x): |
| return dict1[x] |
| dict1 = {'1': 3, '2': 2, '3': 1} |
| print(f"直接max判断,字典中的最大键是{max(dict1)} ,数据类型是{type(max(dict1))},对应的值是{dict1[max(dict1)]} ") |
| print(f"指定key判断,字典中的最大键是{max(dict1, key=dict_max)} ,数据类型是{type(max(dict1, key=dict_max))},对应的值是{dict1[max(dict1, key=dict_max)]} ") |
| |
| |
| |
complex : 复数
| |
| |
| start = complex(3, 4) |
| print(start) |
| |
| second = complex(5, 9) |
| print(second) |
| |
| res = start + second |
| print(res) |
all / any : 条件判断
| print(all([1, 1, 1, 0])) |
| print(any([0, 0, 0, 1])) |
| input_string = input("请输入密码:") |
| if any(char.islower() for char in input_string): |
| print("密码中含有一个小写字母,密码验证通过!") |
| else: |
| print("密码中必须包含一个小写字母,请重新输入!") |
reversed : 翻转
| list1 = [1, 2, 3] |
| print(type(reversed(list1))) |
| print(tuple(reversed(list1))) |
| print(list(reversed(list1))) |
| print(set(reversed(list1))) |
| '''set 类型,因为某些特性,数字是会按照顺序排序''' |
| tuple1 = ('a', 'b', 'c') |
| print(set(reversed(tuple1))) |
slice : 切片
| list1 = [1, 2, 3, 4, 5, 6] |
| print(slice(1, 5, 2)) |
| print(type(slice(1, 5, 2))) |
| print(list1[slice(1, 5, 2)]) |
| '''等价于''' |
| print(list1[1:5:2]) |
- 使用
slice
函数可以将切片的参数提前定义,然后在多个地方重复使用,提高代码的可读性和重用性。
sorted : 排序
| list1 = [6, 5, 4, 3, 2, 1] |
| print(sorted(list1)) |
| print(sorted(list1, reverse=True)) |
| |
| |
| '''可以自定义排序规则''' |
| print(sorted(list1, reverse=False, key=lambda x: x ** 2 % 2)) |
| |
| |
| |
| |
| |
| |
| |
enumerate : 枚举
| '''枚举就是 (索引值 + 值) 的一个元组''' |
| list1 = [6, 5, 4, 3, 2, 1] |
| |
| print(enumerate(iterable=list1, start=0)) |
| |
| |
| print(list(enumerate(list1))) |
| print(tuple(enumerate(list1))) |
| print(dict(enumerate(list1))) |
| |
| |
| for index, value in enumerate(list1): |
| print(index, value) |
| '''指定索引值起始值''' |
| list1 = [6, 5, 4, 3, 2, 1] |
| |
| print(dict(enumerate(iterable=list1, start=1))) |
| |
| |
| print(dict(enumerate(iterable=list1, start=5))) |
| |
| '''对齐''' |
| s = "hello world!" |
| print(format(s, "^20")) |
| |
| print(format(s, "<20")) |
| |
| print(format(s, ">20")) |
| |
| '''进制转换''' |
| print(format(99, 'b')) |
| print(format(99, 'c')) |
| print(format(99, 'd')) |
| print(format(99, 'o')) |
| print(format(15, 'x')) |
| print(format(15, 'X')) |
| print(format(99, 'n')) |
| print(format(99)) |
| print('e:', format(123456789, 'e')) |
| print('0.2e:', format(123456789, '0.2e')) |
| print('0.2E:', format(123456789, '0.2E')) |
| print('f:', format(1.23456789, 'f')) |
| print('0.2f:', format(1.23456789, '0.2f')) |
| print('0.10f:', format(1.23456789, '0.10f')) |
| print('F:', format(1.23456789e+3, 'F')) |
bytes : 将字符转为二进制数据
| str1 = 'hello world' |
| '''utf-8 中 英文1个字母1个字节 二进制数据''' |
| print(bytes(str1, encoding='utf8')) |
| str2 = '你好' |
| '''utf-8 中 中文1个中文3个字节 二进制数据''' |
| print(bytes(str2, encoding='utf8')) |
| |
| '''英文可以直接通过【b+''】得到二进制数据,而中文不可以直接使用【b+''】''' |
| print(b'hello world') |
| print(b'你好') |
bytearray :字节数组
| str1 = 'hello world' |
| '''utf-8 中 英文1个字母1个字节 二进制数据''' |
| res = bytearray(str1, encoding='utf8') |
| print(res) |
| print(type(res)) |
| |
| print(list(res)) |
| |
| res[0] = 97 |
| print(str(res)) |
| str2 = '你好' |
| '''utf-8 中 中文1个中文3个字节 二进制数据''' |
| res = bytearray(str2, encoding='utf8') |
| print(res) |
| print(type(res)) |
| |
| print(list(res)) |
| |
| res[0] = 229 |
| res[1] = 165 |
| res[2] = 189 |
| print(str(res)) |
| txt = res.decode(encoding='utf8') |
| print(txt) |
| str2 = '你好' |
| '''utf-8 中 中文1个中文3个字节 二进制数据''' |
| res = bytearray(str2, encoding='utf8') |
| print(res) |
| print(type(res)) |
| |
| print(list(res)) |
| |
| res[0] = 97 |
| ''' |
| 如果只修改了一个字节编码,且这个编码与中文不一致,将会报错 |
| 例如此处,在编码中97 是英文字母a, |
| 而这样,只有5个字节编码了,不满足中文3个字节的条件,utf8编码中将找不到对用的内容 |
| ''' |
| print(str(res)) |
| txt = res.decode(encoding='utf8') |
| print(txt) |
chr / ord : 字符转换
ord
函数用于查找字符的 Unicode 码点(code point)
chr
函数将 Unicode 码点转换为字符
| res = ord("中") |
| print(res) |
| print(chr(res)) |
ascii :在ASCII编码中查找值
| print(ascii('a')) |
| print(ascii('中')) |
| print(ascii('国')) |
| |
| |
| print(chr(ord('\u4e2d'))) |
repr :返回对象的字符串格式
| txt = "这是换行符:\n这是制表符:\t制表符以后" |
| print(txt) |
| ''' |
| 这是换行符: |
| 这是制表符: 制表符以后 |
| ''' |
| print(repr(txt)) |
| |
| '''可以简写成【r''】引导''' |
| print(r"这是换行符:\n这是制表符:\t制表符以后") |
| |
| |
zip : 拉链
| lst1 = [1, 2, 3, 4, 5, 6] |
| lst2 = ['醉乡民谣', '驴得水', '放牛班的春天', '美丽人生', '辩护人', '被嫌弃的松子的一生'] |
| lst3 = ['美国', '中国', '法国', '意大利', '韩国', '日本'] |
| print(zip(lst1, lst1, lst3)) |
| |
| |
| |
| for el in zip(lst1, lst2, lst3): |
| print(el) |
| |
| |
| |
| |
| |
| |
| |
filter : 过滤
| def func(i): |
| return i % 2 == 1 |
| |
| |
| lst = [1, 2, 3, 4, 5, 6, 7, 8, 9] |
| |
| |
| l1 = filter(func, lst) |
| print(l1) |
| print(list(l1)) |
| |
map : 映射
| def f(i): |
| return i |
| |
| |
| lst = [1, 2, 3, 4, 5, 6, 7, ] |
| |
| |
| |
| it = map(f, lst) |
| print(it) |
| |
| |
| print(list(it)) |
| |
globals / locals : 名称空间
-
locals() 返回当前作用域中的名字
-
globals() 返回全局作用域中的名字
| name = 'user' |
| age = 18 |
| |
| |
| def outer(): |
| name_func = 'lenvo' |
| age_func = 20 |
| print(f"locals当前作用域:{locals()}") |
| print(f"globals全局作用域:{globals()}") |
| |
| |
| outer() |
| ''' |
| locals当前作用域:{'name_func': 'lenvo', 'age_func': 20} |
| |
| globals全局作用域:{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x00000258050E4880>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:\\Files\\Python\\pythonProject1\\python.py', '__cached__': None, 'name': 'user', 'age': 18, 'outer': <function outer at 0x0000025804CD3EB0>} |
| ''' |
eval / exec : 执行字符串类型的代码
- eval() 执行字符串类型的代码. 并返回最终结果
| txt = 'input("请输入内容:")' |
| input_txt = eval(txt) |
| print(input_txt) |
| exec_input = exec(txt) |
| print(exec_input) |
| '''对于带有运算逻辑的eval就无法执行了,就需要exec''' |
| txt1 = """ |
| def index(): |
| print("执行成功") |
| return "函数的返回值" |
| """ |
| eval(txt1) |
| txt1 = """ |
| def index(): |
| print("执行成功") |
| return "函数的返回值" |
| """ |
| res = exec(txt1) |
| print(res) |
| res_index = index() |
| print(res_index) |

isinstance : 判断数据类型
| print(isinstance('str', str)) |
| print(isinstance([1, 2, 3], str)) |
| '''也可以是一个元组''' |
| print(isinstance([1, 2, 3], (str, list))) |
range :循环生成数据
| print(range(1, 10)) |
| |
| print(type(range(1, 10))) |
| |
| |
| print([i for i in range(1, 10)]) |
| |
iter / next : 迭代器
- iter()
- 创建迭代器, 内部实际使用的是__ iter__()方法来获取迭代器
| list1 = [1, 2, 3, 4] |
| iter_list = iter(list1) |
| print(iter_list) |
| print(type(iter_list)) |
| |
- next()
- 迭代器向下执行一次, 内部实际使用了__ next__()方法返回迭代器的下一个项目
| list1 = [1, 2, 3, 4] |
| iter_list = iter(list1) |
| |
| print(next(iter_list)) |
| print(next(iter_list)) |
| print(next(iter_list)) |
callable :
| a = 10 |
| |
| |
| print(callable(a)) |
| |
| |
| def f(): |
| print("hello") |
| |
| |
| print(callable(f)) |
| |
frozenset:冻结集合
| set = {1, 2, 3, 4} |
| frozen_set = frozenset(set) |
| |
| print(hash(frozen_set)) |
| |
| print(hash(set)) |
特点:
- 不可变性: 一旦创建,
frozenset
对象的内容不可更改。不能添加、删除或更新元素。
- 可哈希性: 由于
frozenset
是不可变的,它是可哈希的,可以作为字典的键或放入另一个集合中。
应用场景:
- 字典的键: 当你需要在字典中使用集合类型作为键时,由于
set
是不可哈希的,你可以使用 frozenset
作为键。
- 集合的元素: 如果你希望将集合作为另一个集合的元素,但不希望集合可变,可以使用
frozenset
。
- 不可变性要求: 在需要不可变性的场景下,你可以选择使用
frozenset
。
| set = {1, 2, 3, 4} |
| frozen_set = frozenset(set) |
| '''普通的集合因为其可变性,所有没有哈希值,而冻结集合有哈希值,所以可以作为字典的键使用''' |
| dict1 = {frozen_set: "字符串"} |
| |
| print(dict1[frozen_set]) |
help : 查看函数或模块用途的详细说明
- help() : 函数用于查看函数或模块用途的详细说明
| def index(name,age): |
| ''' |
| 可以读取到函数内部,也就是这里的注释内容 |
| :param name: 解释形参 |
| :param age: 解释形参 |
| :return: 解释返回值 |
| ''' |
| print(help(index)) |
| ''' |
| index(name, age) |
| 可以读取到函数内部,也就是这里的注释内容 |
| :param name: 解释形参 |
| :param age: 解释形参 |
| :return: 解释返回值 |
| |
| ''' |
| |
| |
| print(help(str)) |
| |
dir:查看内置属性
-
dir() :
-
查看对象的内置属性
-
访问的是对象中的 __dir__()
方法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· DeepSeek 开源周回顾「GitHub 热点速览」
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了