python基础-内置函数、可迭代对象、迭代器对象、异常捕获
一、重要内置函数
1.zip
| 1.zip作用:组合 |
| 将两个列表中 位置顺序相同的一起结合成元组 |
| 2.语法结构:zip(数据集名1,数据集名2,数据集名3) |
| 3.特点: |
| 1)如果数据集中的数据个数不同,则zip中只会以短的数据集个数为接收标准 |
| 2)zip的返回值需要转换成列表不然返回的是<zip object at 0x1048bed80> |
| |
| |
| l1 = [1, 2, 3, 4, 5, 4, 3, 2, 1] |
| l2 = ['jason', 'kevin', 'oscar', 'duoduo', 'leethon', 'jack', 'uzi'] |
| l3 = [989, 'name', 11, 22, 33, 44, 55] |
| res = zip(l1, l3, l2) |
| print(list(res)) |
| ----------结果------------ |
| [(1, 989, 'jason'), (2, 'name', 'kevin'), (3, 11, 'oscar'), (4, 22, 'duoduo'), (5, 33, 'leethon'), (4, 44, 'jack'), (3, 55, 'uzi')] |
2.filter过滤
| 1.filter作用:过滤 |
| 过滤数据集中符合标准的数据值 |
| 2.语法结构:filter(函数,数据集名) |
| 3.特点: |
| 1)本质:filter的其实就是,按照 for 循环得到数据集中的数据值,通过 lambda 函数去过滤数据集中符合标准的数据值 |
| 2)filter函数的返回值也不是一个数,而是处理之后的数据集地址,想得到结果需要转换成列表 <filter object at 0x102f74220> |
| |
| |
| l1 = [100, 2, 3, 40, 5, 41, 322, 2, 1] |
| res = filter(lambda x: x + 40, l1) |
| print(list(res)) |
| ----------结果------------ |
| [100, 2, 3, 40, 5, 41, 322, 2, 1] |
3.sorted升序排序
| 1.sorted作用:升序排序 |
| 将数据集中的数据, 按照大小升序排列类似于 sort方法 |
| 2.语法结构:sorted(数据集名) |
| 3.特点: |
| 默认升序排列,返回值则是升序后的数据集 |
| |
| |
| l1 = [100, 2, 3, 40, 5, 41, 322, 2, 1] |
| res = sorted(l1) |
| print(res) |
| ----------结果------------ |
| [1, 2, 2, 3, 5, 40, 41, 100, 322] |
二、常见内置函数
1.abs()绝对值
| 1.作用:取数据的绝对值 |
| 2.语法: abs(数据) |
| |
| print(abs(-99)) |
| print(abs(100)) |
| ----------结果------------ |
| 99 |
| 100 |
2.all()
| 1.作用:所有数据值对应的布尔值为 True结果才是 True,否则返回 False |
| 2.语法: all(数据) |
| 3.特点:有一个不是 True则返回 False |
| |
| |
| |
| l1 = [100, 2, 3, 40, 5, 41, 322, 2, 1] |
| print(all(l1)) |
| print(all([100, 0, 322, 2, 1])) |
| ----------结果------------ |
| True |
| False |
3.any()
| 1.作用:所有数据值对应的布尔值有一个为 True结果就是 True,全部为 False才返回 False |
| 2.语法:any(数据) |
| 3.特点:只有数据集中的元素布尔值全部为 False,才返回 False,不然都是 True |
| |
| |
| l1 = [100, 2, 3, 40, 5, 41, 322, 2, 1] |
| print(any(l1)) |
| print(any([0, None, False, [], {}, ()])) |
| ----------结果------------ |
| True |
| False |
4.bin二进制 oct十进制 hex十六进制 int整数
| 1.作用:将其他进制数转为该进制数 |
| 2.语法 |
| 3.特点:bin 和 int 中的数字会默认是十进制, oct 和 hex或默认中间的数字是二进制数 |
| |
| |
| print(bin(100)) |
| print(oct(100)) |
| print(hex(100)) |
| print(int(100)) |
| ----------结果------------ |
| 0b1100100 |
| 0o144 |
| 0x64 |
| 100 |
5.bytes() 编码
?????????????
| 1.作用:返回一个新的“bytes”对象,它是0<=x<256范围内的不可变整数序列。 |
| 2.语法:class bytes([source[, encoding[, errors]]]) |
| |
| |
| print((bytes())) |
| print((bytes([1,2,255]))) |
| print(type(bytes([1,2,255]))) |
| print((bytes("China",'utf-8'))) |
| print((bytes("中国",'gbk'))) |
| print((bytes([1,2,256]))) |
| ----------结果------------ |
| b'' |
| b'\x01\x02\xff'<class 'bytes'> |
| b'China' |
| b'\xd6\xd0\xb9\xfa' |
| Traceback (most recent call last): |
| File "D:/Pythonproject/111/bytes.py", line 6, in <module> |
| print((bytes([1,2,256]))) |
| ValueError: bytes must be in range(0, 256) |
6.callable() 调用
| 1.作用:判断某一个名字是否可以加括号()调用 |
| 2.语法:callable(名称) |
| 3.特点:返回值是布尔值 |
| |
| |
| name = 'jason' |
| def index(): |
| print('from index') |
| print(callable(name)) |
| print(callable(index)) |
| ----------结果------------ |
| False |
| True |
7.chr() ord()
| 基于ASCII码表作数字与字母转换 |
| |
| print(chr(65)) |
| print(ord('A')) |
| 1.作用:基于ASCII码表作数字与字母转换 |
| 2.语法: chr(ASCII码编号) 返回对应字母 |
| ord(对应字母) 返回ASCII码编号 |
| |
| |
| print(chr(65)) |
| print(ord('A')) |
8.dir()
| 1.作用:返回括号内对象里面能调用的 名字 |
| 2.语法:dir(数据) |
| 3.特点 |
| |
| |
| l1 = [100, 2, 3, 40, 5, 41, 322, 2, 1] |
| print(dir('hello')) |
| print(dir(l1)) |
| ----------结果------------ |
| ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isascii', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] |
| ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] |
| |
9.divmod()
| 返回元组(整数,余数) |
| res = divmod(100,3) |
| print(res) |
| |
| |
| page_num,more = divmod(100,10) |
| if more: |
| page_num += 1 |
| print('总页码为:',page_num) |
| |
| ----------结果------------ |
| 元组 第一个数据为整除数 第二个是余数 |
| 1.作用: 返回元组第一个数据为整除数 第二个是余数 |
| 2.语法: divmod(整数,余数) |
| 3.特点: 返回的是元组 |
| |
| |
| res = divmod(100,3) |
| print(res) |
| |
| |
| page_num, more = divmod(100, 10) |
| if more: |
| page_num += 1 |
| print('总页码为:', page_num) |
| ----------结果------------ |
| 总页码为: 10 |
10.enmerate() 枚举
| 1.作用:将i中的元素遍历,并按照顺序和递增的起始值 一一组队输出成一个个元组 |
| 2.语法: enumerate(i,start=起始值) |
| i为数据值,type是想判断的数据类型 |
| 3.特点: 返回的是元组 |
| |
| |
| s1 = 'hello' |
| for i in enumerate(s1,start=100): |
| print(i) |
| ----------运行结果-------- |
| (100, 'h') |
| (101, 'e') |
| (102, 'l') |
| (103, 'l') |
| (104, 'o') |
11.eval() exec()
| 1.作用:能自动识别字符串在的py代码并执行 |
| 2.语法: eval(字符串) |
| exec(字符串) |
| 3.特点: |
| eval() |
| exec() |
| |
| s1 = 'print("不是摆烂而是我放松的姿态")' |
| eval(s1) |
| exec(s1) |
| s2 = 'for i in range(3):print(i)' |
| eval(s2) |
| exec(s2) |
| ----------结果------------ |
| 不是摆烂而是我放松的姿态 |
| 不是摆烂而是我放松的姿态 |
| |
| 0 |
| 1 |
| 2 |
12.hash()哈希加密
| 1.作用:加密 |
| |
| |
| print(hash('不是摆烂而是我放松的姿态')) |
| ----------结果------------ |
| 4878369790386566897 |
| 1.id() 返回内存地址 |
| 2.input() 获取输入 |
| 3.判断的数据类型 |
| isinstance(i,type) |
| i为数据值,type是想判断的数据类型 |
14.map() max() min()
| 1.map() 映射 |
| 2.max() \ min() 最大值 最小值 |
15.open
| 1.作用:由应用程序向操作系统发起系统调用 open(...),操作系统打开该文件,对应一块硬盘空间,并且返回一个文件对象 |
| 2.语法: open(文件路径, 读写模式, encoding='utf8') |
| 3.特点:返回一个文件对象 |
16.pow幂指数
| 1.作用:计算x的y次幂 |
| 2.语法:pow(x, y[, z]) |
| 函数是计算 x 的 y 次方,如果 z 在存在,则再对结果进行取模,其结果等效于 pow(x,y) %z |
| 取模运算是求两个数相除的余数 |
| |
| print(pow(2, 2, 2)) |
| print(pow(2, 3)) |
| print(pow(2, 4)) |
| ----------结果------------ |
| 0 |
| 8 |
| 16 |
17.range() xrange()
三个参数,最后那个参数和分页相关?
| 1.作用 |
| 此函数是 Python 内置函数,用于生成一系列连续整数,可以简单的理解为是帮我们产生一个内部含有多个数字的数据。 |
| |
| 2.语法 |
| |
| for i in range(101): |
| print(i) |
| |
| |
| for i in range(10, 20): |
| print(i) |
| |
| |
| for i in range(1, 20, 2): |
| print(i) |
| |
| 3.特点 |
| |
| Python 2中除 range() 函数外,还提供了一个 xrange() 函数,它可以解决 range() 函数不经意间耗掉所有可用内存的问题。 |
| |
| 但在 Python 3 中,已经将 xrange() 更名为 range() 函数,并删除了老的 xrange() 函数。 |
18.round() 五舍六入
| 1.作用: 把浮点型的数据保留整数 |
| 2.语法: round(数据) |
| 3.特点:五舍六入 |
| |
| |
| print(round(98.3)) |
| print(round(98.6)) |
19.sum() 求和
| 1.作用:将数据集中的数据求和 |
| 2.语法:sum(数据集) |
| |
| |
| l1 = [100, 2, 3, 40, 5, 41, 322, 2, 1] |
| print(sum(l1)) |
20.zip()
内置函数和数据类型内置方法的区别:
方法是只有该数据类型才能用
内置函数不规定数据类型
三、可迭代对象
| 1.可迭代对象 |
| 数据对象 内置有__iter__方法的称为可迭代对象 |
| |
| """ |
| 1.内置方法 通过点的方式能够调用的方法 |
| 2.__iter__ 双下iter方法 |
| """ |
| 2.可迭代对象的范围 |
| 不是可迭代对象 |
| int float bool 函数对象 |
| 是可迭代对象(支持for循环) |
| str list dict tuple set 文件(也是跌打器对象) |
| 3.可迭代的含义(可迭代对象的作用) |
| """ |
| 迭代:更新换代(每次更新都必须依赖上一次的结果) |
| eg:手机app更新 |
| """ |
| 可迭代的含义:在python中可以理解为是否支持for循环 |
| |
四、迭代器对象
| 1.迭代器对象 |
| 可迭代对象调用__iter__ 双下iter方法 就变成了迭代器对象 |
| |
| 迭代器即用来迭代取值的工具,二迭代是重复反馈过程的活动,其目的痛楚是为了笔记所需的目标或结果,每次对过程的重复成为一次迭代,二每次迭代得到的就够货作为下一次迭代的初始值,单纯的重复不是迭代 |
| |
| |
| 2.迭代器对象作用 |
| 提供了一张不依赖于索引 (字典和集合没有索引的概念) 取值的方式 |
| |
| 3.迭代器对象实操 |
| |
| |
| s1 = 'hello' |
| res = s1.__iter__() |
| print(res.__next__()) |
| 一旦__next__取不到值就会报错 |
| |
| 4.注意事项 |
| 可迭代对象调用__iter__会变成迭代器对象,迭代器对象如果还调用可迭代对象调用__iter__还是迭代器对象没有变化 |
| |
| |
| s1 = 'hello' |
| print(s1.__iter__().__next__()) |
| print(s1.__iter__().__next__()) |
| print(s1.__iter__().__next__()) |
| print(s1.__iter__().__next__()) |
| print(s1.__iter__().__next__()) |
| |
| 5.简写 |
| iter() |
| next() |
| |
| 6.字典和集合取值 |
| |
| |
| d = {'name':'jason'} |
| res = d.__iter__() |
| print(res) |
五、for循环的本质
| for 变量名 in 可迭代对象: |
| 循环体代码 |
| """ |
| 1.先将in后面的数据调用__iter__转变被迭代器对象(文件本身就是迭代器对象,在调用__iter__也还是迭代器对象) |
| 2.一次用迭代器对象调用__next__取值 |
| 3.一旦__next__取不到值报错,for循环会自动捕获并处理 |
| """ |
六、异常捕获/处理
| 1.异常 |
| 异常就是代码运行报错,也叫bug |
| |
| |
| 2.异常类型 |
| 1)语法错误 |
| 不允许出现错误 |
| 2)逻辑错误 |
| 允许出现,因为它一眼发现不了,代码运行之后才可能会出现 |
| 3.异常报错显示区的内容 |
| 部分 1)异常出现的位置 |
| 部分 2)异常出现的类型:部分 3)异常的类型 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY