知识点1 :常用内置函数
1 常用内置函数的实际应用
1.1 abs() 返回值是一个绝对值,参数可以是整数和浮点数,如果参数是一个复数,则返回它的模。
print(abs(-12.3)) # 12.3
print(abs(10)) # 10
1.2 all() 如果interable中的所有元素结果都为真(或iterable为空),则返回:True
list0 = []
list1 = [1, 2, 3, 4, 5, 6]
list2 = [0, 2, 4]
print(all(list0)) # True
print(all(list1)) # True
print(all(list2)) # False
1.3 any() 如果iterable中只要有一个元素为真,则返回:True
list0 = []
list1 = [1, 2, 3, 4, 5, 6]
list2 = [0, 2, 4]
print(any(list0)) # False
print(any(list1)) # True
print(any(list2)) # True
1.4 bin() 十进制转二进制
print(bin(100)) # 0b1100100
1.5 bool() 布尔值转换
print(bool(1)) # True
print(bool(0)) # False
1.6 bytes() 字符串的编码和解码
res = bytes('我们的', 'utf8')
print(res) # b'\xe6\x88\x91\xe4\xbb\xac\xe7\x9a\x84'
res1 = str(res, 'utf8')
print(res1) # 我们的
1.7 callable 判断是否是可调用的对象
name = 'jason'
def index():
pass
print(callable(name)) # False
print(callable(index)) # True
1.8 int() 其它进制数转十进制数
print(int(0b1100100)) # 100
1.9 dir() 获取对象内部可以通过句点符获取的数据
print(dir(int))
print(dir(str))
print(dir(list))
1.10 divmod() 获取除法之后的整数和余数
print(divmod(101, 10)) # (10, 1)
real_num, more = divmod(898, 10)
1.11 enumerate() 枚举
l1 = ['zhang', 'wang', 'liu', 'li']
for i, j in enumerate(l1, 100): # 100是起始值
print(i, j)
# 100 zhang
# 101 wang
# 102 liu
# 103 li
1.12 eval() 能够识别字符串中简单的python代码并执行 exec() # 能够识别字符串中复杂的python代码并执行
s1 = "print('哈哈哈')"
eval(s1)
s2 = "for i in range(10):print(i)"
exec(s2)
1.13 chr() 数字>>>字符 ord() 字符>>>数字
print(chr(65)) # A
print(ord('A')) # 65
1.14 hash() 返回一串随机的数字(哈希值)
print(hash('zhang')) # 1924788847951874661
1.15 help() 查看帮助信息
help(len)
1.16 isinstance() 判断某个数据是否属于某种数据类型
print(isinstance(123, int)) # True
print(isinstance([], list)) # True
1.17 pow() 幂指数
print(pow(3, 3)) # 27
1.18 round() 四舍五入
print(round(19.4)) # 19
print(round(19.5)) # 19
print(round(19.6)) # 19
知识点2:可迭代对象
2.1迭代是什么?
- 迭代就是更新换代,每次迭代都是基于上一次的成果
2.2如何判断可迭代对象?
- 内置有__iter__方法的都叫做可迭代对象
2.3常见的可迭代对象都有哪些?
- list,tuple,dict,str,set,文件(支持for循环)
- 不可迭代对象:int,float,bool,函数名
知识点3 :迭代器对象
3.1迭代器对象的特点
- 1> 给我们提供了一种不依赖索引取值的方式
- 2> 正是迭代器对象的存在,字典,集合这种无序类型才实现了循环取值
3.2判断迭代器对象的标准
- 1>内置有__iter__和__next__的对象都称为迭代器对象
3.3可迭代对象和迭代器对象之间的关系
- 1> 可迭代对象调用__iter__方法之后就变成了迭代器对象
- 2> 迭代器对象调用__iter__方法之后还是一个迭代器对象,也就是它本身
3.4迭代取值
res = 'zhang'.__iter__()
print(res.__next__()) # z
print(res.__next__()) # h
print(res.__next__()) # a
print(res.__next__()) # n
print(res.__next__()) # g
res = {'name': 'zhang', 'age': 18}.__iter__()
print(res.__next__()) # name
print(res.__next__()) # age
dic = {'name': 'zhang', 'age': 18}
print(dic.__iter__().__next__()) # name
print(dic.__iter__().__next__()) # name
# 注意:上面每次都产生了新的迭代器对象
3.5 简写形式
- iter() next()
list1 = [1, 2, 3]
res = list1.__iter__()
iter(list1)
res.__next__()
next(res)
3.6 迭代器对象特殊的地方
- 1> 可迭代对象和迭代器对象通过打印,无法直接看出内部数据的情况
- 2> 特点:节省内存空间
知识点4:for循环的本质
# 1语法结构
# for 变量名 in 可迭代对象:
# for循环体代码
# 1.for会自动将in后面的数据调用__iter__()变成迭代器对象
# 2.之后每次循环调用__next__()取值
# 3.最后没有值__next__()会报错 for能够自动处理该错误 让循环正常结束
知识点5:异常捕获
l1 = [1, 2, 3, 4, 5, 6, 7,8, 9, 10]
res = l1.__iter__()
account = 0
try:
while True:
print(res.__next__())
except StopIteration:
print('停下啦')