一、一些重要内置函数、常见内置函数
1..zip()
将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的zip对象,转成list即可查看,如果对应元素个数不一样,按水桶长短板效应返回短的,多余的直接不要
2.filter()
是从列表(或其他序列类型)中筛选出满足条件的子列表
l1 = [1,2,3,4,5,6,7,8]
def check(i):return i % 2 == 0
a = list(filter(check, l1))
print(a)
>>>
[2, 4, 6, 8]
3..sorted()
sorted(可迭代对象, key = None # 排序规则, reverse=False # 默认升序)
4..abs() >>>绝对值
5..all() 、any() >>>类似and or 判断,所有数据布尔值为True才返回True
所有数据有一个布尔值为True才返回True
6..callable() >>>判断名字是否可以加括号调用
7..chr() ord () >>>基于ASCII码表做数字与字母的转换
a~z 97~122
A~Z 65~90
8..dir() >>> 返回对象能调用的名字
9..divmod() >>> divmod(a, b) a除以b,返回c余d的一个元组
print(divmod(30, 4))
>>>
(7, 2)
10..eval() 、exec() >>> 函数用来执行一个字符串表达式,并返回表达式的值。
exec能力更强
x = 3
print(eval( '3 * x' ))
>>>
9
11..pow(a, b) >>>a的b次方
12..round() >>> 四舍五入,但是有点怪
13..sum() >>>求和
二、迭代器(iterator)
1.介绍
迭代是指重复取值,每次都基于上一次的结果再进行下一次重复,必须要有关联,迭代器就是做这个事的工具。
2.为何要产生迭代器
传统迭代取值,只能取带有索引的值,如列表、字符串、元组
所以python提供了一种不依赖于索引的取值方式,统一的一种方式
3.可迭代对象
内置有__iter__方法的都称之为可迭代对象 ,就是给你调用的
有:字符串,列表,字典,元组,集合,文件对象
无:整型、浮点型
4.用法(先当自己没学for循环)
对可迭代对象用内置的iter方法,会将其转换成迭代器对象
转了后就不依赖索引取值了
比如说字典:
dict1 = {'nike':18, 'jack':22, 'dacid': 30}
t = dict1.__iter__()
print(t.__next__()) >>>nike
print(t.__next__()) >>>jack
print(t.__next__()) >>>dacid
print(t.__next__()) >>>报错 # 迭代器没得值取了,异常
dict1 = {'nike':18, 'jack':22, 'dacid': 30}
t = dict1.__iter__()
while True:
try:
print(t.__next__())
except StopIteration:
break
# 拓展:把有可能run异常的代码缩进,然后捕捉异常后结束掉循环
5.注意
在对一个迭代器对象取值取干净的情况下,再取取不到了,下干净了,需要再次迭代一下,就又可以继续取,返回的就是他自己,其实和没调一样
可迭代对象 != 迭代器对象
迭代器对象 一定= 可迭代对象
既是可迭代对象又是迭代器对象的只有文件对象(打开的)
6.优缺点
优点:
只要对象是可迭代对象,都可以取值了
更加省内存的占用
>>>比如说range()在python3 中就是被做成了可迭代对象,python2就是直接出列表(比较占内存)
缺点:
不能直接取到想要的位置的值,只能一个个的来取
三、for循环的工作原理
while循环可以称为条件循环,for循环可以称为迭代器循环
被输入的参数,统一被转成迭代器即在数据尾部加__next__
然后循环执行__next__取值,如果报错for循环会捕捉异常然后结束取值
python为了节省内存,把可迭代对象打包成一个工厂(迭代器),要取值的时候再一个个给你
四、异常捕获
1.何为异常
异常是程序发生错误的信号,程序一旦出错就会给出异常,程序的运行立即终止,pycharm中的波浪线其实也算是一种异常提醒
2.异常的捕获的三个特征
# 异常的追踪信息 ————定位异常位置 pycharm里点一下蓝色位置的行可以定位过去
# 异常的类型
# 异常的内容 ——————错误的原因,是英文,一般看完就知道大致的解决方法
3.异常的种类
- 语法错误 >>>比如说中文冒号啊,没缩进啊,需要立即修改
- 逻辑错误 >>>一般是自己的想法、逻辑没按程序的规范写,出现了尽快修改