内置函数、迭代器
今日内容概要
- 重要内置函数
- 常见内置函数
- 可迭代对象
- 迭代器对象
- for循环的本质
- 异常捕获/处理
- 作业

重要内置函数
-
zip()拉链赋值l1 = ["jason", "oscar", "kevin"] l2 = [111, 222, 333] res = zip(l1, l2) # 两个参数都必须式可迭代对象 print(res) # print(dict(res)) # {'jason': 111, 'oscar': 222, 'kevin': 333} print(list(res)) # [('jason', 111), ('oscar', 222), ('kevin', 333)] -
filter()过滤# 过滤 filter() # 第一个参数可以是函数 也可以是None 第二个参数必须是可迭代对象 l1 = [1, 2, 3, 4] res = filter(lambda a: a > 3, l1) # 用函数写判断条件 print(res) # <filter object at 0x000002AFD96692B0> print(list(res)) # [4] 把处理好的数据放到 filter对象里 用list反解出来 -
sorted()排序 默认升序# 排序 res = sorted({1, 3 , 4, 2, 4}) # 可以放可迭代对象 print(res) # [1, 2, 3, 4] res = sorted("hello") print(res) # # ['e', 'h', 'l', 'l', 'o']
常见函数
-
abs()绝对值abs() # 绝对值 res = abs(11) # 只能传一个整型 print(res) # 11 -
all()只要一个值的布尔值位False则返回Falseall() # 只要一个值为False则返回False print(all([1, 2])) print(all([1, 2, []])) # False # 只能传可迭代对象 而且只能传一个参数如果可迭代对象里的布尔值一个为False则返回False -
any只要一个数据值为True则结果为Trueany() # 只要有一个值为True则结果为True print(any([{}, 2, [], None])) # True # 只能传可迭代对象 而且只能传一个参数如果可迭代对象里的布尔值一个为True则返回True -
bin()二进制oct()八进制hex()l1 = 10 print(bin(l1)) # 0b1010 print(oct(l1)) # 0o12 print(hex(l1)) # 0xa -
bytes()转换为bytes类型 第一个数据,第二个数据是编码格式bytes() # 转换为bytes类型 第一个数据, 第二个是编码格式 res1 = bytes("哈哈哈", "utf8") # b'\xe5\x93\x88\xe5\x93\x88\xe5\x93\x88' res2 = "哈哈哈".encode("utf8") # b'\xe5\x93\x88\xe5\x93\x88\xe5\x93\x88' print(res1) print(res1.decode("utf8")) # 哈哈哈 encode 的编码, decode 解码 print(res2) -
callable()判断 传的数据是否可以加括号调用callable() # 判断名是否可以加括号调用 name = 1 print(callable(name)) # False -
chr()基于ASCII码表做数字与字母的交换chr() # 基于ASCII码表做数字与字母的交换 print(chr(120)) # x -
ord()基于ASCII码表做字母与数字的交换ord() # 基于ASCII码表做字母与数字的交换 print(ord("e")) # 101 -
dir()返回括号内对象能够调用的名字dir() # 返回括号内对象能够调用的名字 name = 1 print(dir(name)) # ['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', 等等] -
divmod()第一个参数是被除数 第二个是除数divmod() # 第一个参数是被除数 第二个是除数 res = divmod(100, 10) print(res) # (10, 0) # 返回元组 第一个是商, 第二个是除数 -
enumerate()枚举 可以传一个可迭代对象enumerate() # 枚举 可以传一个可迭代对象 res = {i:k for i, k in enumerate("hello")} print(res) # {0: 'h', 1: 'e', 2: 'l', 3: 'l', 4: 'o'} -
eval()能够识别字符串中的python文件并执行能力不强具有逻辑性的都不行eval() # 能够识别字符串中的python文件并执行能力不强具有逻辑性的都不行 eval("print('哈哈哈')") # 哈哈哈 -
exec()能够识别字符串中的python文件并执行 可以识别具有一定逻辑性的py代码exec() # 能够识别字符串中的python文件并执行 可以识别具有一定逻辑性的py代码 exec("for i in 'hello': print(i)") """ h e l l o """ -
hash()哈希加密hash() # 哈希加密 l1 = "哈哈" print(hash(l1)) # 7118397836838384864 -
id()获取内存地址id() # 获取内存地址 name = 1 print(id(name)) # 140716761945872 -
input()用户交互input() # 用户交互 res = input("请输入:") print(res) # 收到 -
isinstance()第一个值数数据值 第二值是数据类型isinstance() # 第一个值是数据 第二个值是数据类型 name = "哈哈" print(isinstance(name, str)) # True -
map()# 映射 第一个值函数, 第二个值是可迭代对象map() # 映射 第一个值是函数, 第二个值是可迭代对象 l1 = [1, 2, 3, 4] res = map(lambda a: a + 1, l1) # 每在后面的可迭代对象取一个值就会放到前面的函数里加工 print(list(res)) # [2, 3, 4, 5] -
min()获取最小值 里面可以传任意的同一类型的数据min() # 获取最小值 里面可以传任意的同一类型的数据 res = min([1, 2, 3, 4]) print(res) # 1 -
open()打开文件f = open() # 第一个值传路径 第二个值是打开文件的模式 第三个值是 编码格式 -
pow()第一个值是数, 第二个值是次方 幂指数pow() # 第一个值是数, 第二个是次方 幂指数 print(pow(3, 3)) # 27 print(pow(3, 4)) # 81 print(pow(3, 5)) # 243 -
range()会得到一个数字集,第一个参数是开始数字,第二个参数是结束位置,第三个参数是步长range() # 第一个参数开始数字, 第二参数是结束位置, 第三个是步长 res = range(1, 10, 2) print(list(res)) # [1, 3, 5, 7, 9] -
round()四舍五入 只能传两个值第一个值是数据,第二个值是小数保留的位数res = round(1.5234, 2,) # 只能传两个值第一个是数字真的数据值 第二个是 小数的保留位数 print(res) # 1.52 -
sum()求和里面只能传值是纯数字的可迭代对象res = sum([1, 2, 3]) print(res) # 6 -
zip()拉来你赋值zip() # 拉链赋值 l1 = ["jason", "kevin", "oscar"] l2 = [1, 2, 3] res_dict = dict(zip(l1, l2)) # 第一参数是迭代器 第二个参数 也是迭代器 print(res_dict) # {'jason': 1, 'kevin': 2, 'oscar': 3}

可迭代对象
-
可迭代对象
对象内置有
__iter__方法的都称为可迭代对象""" 1.内置方法 通过点的方式能过调用的方法 2.__iter__ 双下iter方法 """ -
可迭代对象的范围
不是可迭代对象 int float bool 函数对象 是可迭代对象 list dict set str tuple 文件 -
可迭代含义
迭代:更新换代(每次更新都必须依赖上一次结果)
eg:手机app更新
可迭代对象在python中可以理解为是否支持for循环
迭代器对象
-
迭代器对象
1. 内置方法既有iter和__next方法 2. 可以由可迭代对象调用__iter__来产生 -
迭代器作用
提供一种不依赖于索引去取值的方式
正因为有迭代器的存在 我们的字典 集合才能过被for循环
-
迭代器对象实操

-
注意事项
可迭代对象调用
__iter__会成为迭代器对象 迭代器对象如果还调用__iter不会有任何变化 还是迭代器对象本身一旦
__next__取不到值 会直接报错
for循环的本质
for 变量名 in 可迭代对象:
循环体代码
"""
1. 会先把in 后面的数据调用__iter__变成迭代器
2.然后调用迭代器的__next__方法
3.当__next__空时会报错 for循环会捕获错误
"""

异常捕获/处理
-
什么是异常
异常即一个事件,该事件会在程序执行过程中发生,影响了程序的正常执行。
一般情况下,在Python无法正常处理程序时发生一个异常。
异常就是Python对象,表示一个错误
当Python脚本发生异常时我们需要捕获错误处理它,否则程序会终止执行
-
异常分类
-
逻辑错误
允许出现 因为它一眼发现不了 代码运行之后才可能出现。
-
语法错误
不允许出现的因为它一眼发现不了 代码运行之后
-
-
异常结果

-
异常类型都有




浙公网安备 33010602011771号