内置函数及for循环原理
python中常见内置函数
- python常见内置函数
- 可迭代对象
- 迭代器对象
- for 循环的本质
python中的内置函数
python中的内置函数非常的多,这里主要介绍常用的一部分
| 序号 | 内置函数名 | 功能 |
|---|---|---|
| 1 | abs() | 求绝对值 |
| 2 | all() , any() | 判断容器类型中所有的数据值对应的布尔值是否为Ture |
| 3 | bin(),oct(), hex, | 进制转换 |
| 4 | int() | 进制转换,其他进制转十进制 |
| 5 | bytes() | 类型转换 |
| 6 | Callable() | call在IT专业名词中翻译成调用 |
| 7 | chr(),ord() | 依据ASCII码表实现字符与字符的转换 |
| 8 | dir() | 获取对象内部可以通过句点符获取的数据 |
| 9 | divmod() | 获取除法之后的整数和与数 |
| 10 | enumerate() | 枚举 |
| 11 | eval(),exec() | 能够识别字符串中python代码并执行 |
| 12 | hash() | 对数据进行hash加密,返回一串哈希值 |
| 13 | help() | 查看帮助信息 |
| 14 | Isinstance(123,int) | True |
| 15 | isinstance(123, str) | False |
| 16 | pow() | 幂指数 |
| 17 | round() | 四舍五入 |
- 可迭代对象
- 迭代就是更新换代,每次迭代都需要基于上一次的结果
比如说我们手机上的软件更新,其实这就是迭代的过程
# 代码实现
1.
while True:
print('123')
""""
这里不属于是迭代的过程,每次内容都是一样的
""""
2.
n = 0
while True:
print(n)
n += 1
"""
这里n就属于在不停地迭代,这个循环就相当于迭代的过程,每次都是基于上一次的结果执行
"""
- 如何判断可迭代对象
内置有__iter__方法的都叫做可迭代对象
内置的含义: 可以通过句点符直接点出来的东西都叫做内置
XXX_ 针对双下划线开头双下滑线结尾的方法统一读:双下XXX可迭代对象含义:可以被for循环的对象就是可迭代对象
| 数据类型 | 是否可迭代 |
|---|---|
| int 整型 | 整型不是可迭代对象 |
| float 浮点型 | 浮点型不是可迭代对象 |
| str 字符串 | 字符串是可迭代对象 |
| list 列表 | 列表是可迭代对象 |
| dict 字典 | 字典是可迭代对象 |
| tuple 元组 | 元组是可迭代对象 |
| set 集合 | 集合是可迭代对象 |
| bool 布尔值 | 布尔值不是可迭代对象 |
| 文件 | 文件是可迭代对象 |
- 判断迭代器对象
内置有__iter__和next的对象都称为迭代器对象 - 可迭代对象于迭代器对象的关系
可迭代对象调用__iter__方法之后就会变成迭代器对象
迭代器对象调用__iter__方法无论多少次还是迭代器对象本身 - 迭代器对象迭代取值
# 当前res就是一个迭代器对象,可是使用__next__对这个res进行取值,但是需要注意如果迭代器对象里的值被取完了还要继续取就会报错
1. 迭代器之字符串取值
res = 'wesley'.__iter__()
print(res.__next__())
print(res.__next__())
print(res.__next__())
print(res.__next__())
print(res.__next__())
print(res.__next__())
2. 迭代器之字典取值
# 字典取值只取键,同样需要先调用__iter__将转成迭代器对象再使用__next__取值,相同的是如果超出取值范围同样会报错
d1 = {'name': 'wesley',
'pwd': 123
}
res = d1.__iter__()
print(res.__next__())
print(res.__next__())
- 中途练习
以知列表:
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
"""
# 需求:不使用for循环 依次打印出列表中所有的数据值
"""
# 1.先将列表变成迭代器对象
res = l1.__iter__()
# 2.统计列表长度
length = len(l1)
# 3. 定义结束条件
count = 0
# 4. 开始循环取值
while count < length:
print(res.__next__())
count += 1
拓展
- 迭代器的反复使用
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
print(l1.__iter__().__next__())
print(l1.__iter__().__next__())
"""
这里是每一次都是转为迭代器对象然后再取值,这样就可以重复使用
"""
- 针对双下方法
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
res = iter(l1)
print(next(res))
iter(11) 相当于l1.__iter__()
next(res) 相当于res.__next__()
- 迭代器对象特殊地方
可迭代对象。迭代对象,通过答应无法直接看出来
相当于工厂,需要数据直接要就可以了,这个机制及比较节省内存
- for循环的本质
for循环原理详细参考
语法结构
for 变量名 in 可迭代对象:
for循环体代码
1. for会自动将in后面的数据调用__iter__()变成迭代器对象
2. 之后每次循环调用__next__()取值
3. 最后没有值__next__()会报错 for能够制动处理该错误,让循环结束
-
异常捕获和处理
1.异常 异常就是代码运行报错 行业俗语叫bug 代码运行中一旦遇到异常会直接结束整个程序的运行 我们在编写代码的过程中药尽可能避免 2.异常分类 语法错误 不允许出现 一旦出现立刻改正 否则提桶跑路 逻辑错误 允许出现的 因为它一眼发现不了 代码运行之后才可能会出现 3.异常结构 错误位置 错误类型 错误详情

浙公网安备 33010602011771号