内置函数、迭代器、异常处理
重要内置函数
zip
zip() 函数返回 zip 对象,它是元组的迭代器,其中每个传递的迭代器中的第一项配对在一起,然后每个传递的迭代器中的第二项配对在一起,依此类推。
如果传递的迭代器具有不同的长度,则项目数最少的迭代器将决定新迭代器的长度。
语法:zip(iterator1, iterator2, iterator3 ...)
l1 = [11, 22, 33, 44, 55]
l2 = ['jason', 'kevin', 'oscar', 'jerry', 'tony']
l3 = [1, 2, 3, 4, 5]
res = zip(l1, l2, l3)
print(list(res))
# [(11, 'jason', 1), (22, 'kevin', 2), (33, 'oscar', 3), (44, 'jerry', 4), (55, 'tony', 5)]
filter
使用过滤器函数排除可迭代对象中的项目。
语法:filter(function, iterable)
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
res = filter(lambda x: x > 40, l1)
print(list(res))
# [44, 55, 66, 77, 88]
sorted
sorted() 函数返回指定的可迭代对象的排序列表。
可以指定升序或降序。字符串按字母顺序排序,数字按数字排序。但无法对同时包含字符串值和数字值的列表进行排序。
l1 = [21, 12, 53, 64, 76, 32, 11, 22]
res = sorted(l1)
print(res)
# [11, 12, 21, 22, 32, 53, 64, 76] 默认升序
常见内置函数
abs() 绝对值
返回数的绝对值
print(abs(-100))# 100
print(abs(100))# 100
all()
如果可迭代对象中的所有项均为 true,则返回 True。否则返回False
print(all([0, 1, 2, 3]))# False
print(all([1, 2, 3, True]))# True
any()
如果可迭代对象中的任何项为 true,则返回 True。
print(any([0, None, '', 1]))# True
print(any([0, None, '']))# False
bin() 返回数的二进制版本。
oct() 把数转换为八进制。
hex() 把数字转换为十六进制值。
int() 返回整数。
bytes()
转换成bytes类型
s1 = '周五了'
print(s1.encode('utf8'))
print(bytes(s1, 'utf8'))
# b'\xe5\x91\xa8\xe4\xba\x94\xe4\xba\x86'
# b'\xe5\x91\xa8\xe4\xba\x94\xe4\xba\x86'
callable()
判断名字是否可以加括号调用
name = 'jason'
def index():
print('from index')
print(callable(name)) # False
print(callable(index)) # True
chr() ord()
基于ASCII码表做数字与字母的转换
print(chr(65)) # A
print(ord('A')) # 65
dir()
返回指定对象的属性和方法的列表。
print(dir('hello'))
# ['__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']
divmod()
当参数1除以参数2时,返回商和余数。
x = divmod(5, 2)
print(x)
# (2, 1);2为商,1为余数
enumerate()
获取集合(例如元组)并将其作为枚举对象返回。
x = ('apple', 'banana', 'cherry')
y = enumerate(x)
print(list( y))
# [(0, 'apple'), (1, 'banana'), (2, 'cherry')]
eval() exec()
s1 = 'print("哈哈哈")'
eval(s1)# 哈哈哈
exec(s1)# 哈哈哈
s2 = 'for i in range(100):print(i)'
eval(s2) # 报错,只能识别简单的python代码,具有逻辑性的都不行
exec(s2) # 1...99,可以识别具有一定逻辑性的python代码
hash()
哈希加密,一种加密方法
# 971221201782251763
id()
返回对象的 id。
input()
允许用户输入。
isinstance()
如果指定的对象是指定对象的实例,则返回 True。
map()
返回指定的迭代器,其中指定的函数应用于每个项目。
max()
返回可迭代对象中的最大项目。
min()
返回可迭代对象中的最小项目。
open()
打开文件并返回文件对象
pow()
返回 x 的 y 次幂的值。
print(pow(2, 2))# 4
print(pow(2, 3))# 8
print(pow(2, 4))# 16
range()
返回数字序列,从 0 开始且以 1 为增量(默认地)。
x = range(6)
for n in x:
print(n)
#依次打印
0
1
2
3
4
5
round()四舍五入
将数字四舍五入为仅两个小数:
x = round(3.1415926, 2)
print(x)
# 3.14
sum()
对迭代器的项目进行求和。
print(sum([11, 22, 33, 44, 55, 66]))
# 231
zip()
zip() 函数返回 zip 对象,它是元组的迭代器,其中每个传递的迭代器中的第一项配对在一起,然后每个传递的迭代器中的第二项配对在一起,依此类推。
l1 = [11, 22, 33, 44, 55]
l2 = ['jason', 'kevin', 'oscar', 'jerry', 'tony']
l3 = [1, 2, 3, 4, 5]
res = zip(l1, l2, l3)
print(list(res))
# [(11, 'jason', 1), (22, 'kevin', 2), (33, 'oscar', 3), (44, 'jerry', 4), (55, 'tony', 5)]
可迭代对象
1、概念
对象内置有__iter__方法的都称为可迭代对象
1.内置方法 通过点的方式能够调用的方法
2.__iter__ 双下iter方法
2、可迭代对象的范围
不是可迭代对象:整型int、浮点型float、布尔值bool、函数对象
可迭代对象:字符串str、列表list、字典dict、元组tuple、集合set、文件对象
3.可迭代的含义
- 可以在上一次更新的基础上进行增加或减少操作。
eg:手机app更新 - 可迭代在python中可以理解为是否支持for循环
迭代器对象
1.迭代器对象
- 由可迭代对象调用__iter__方法产生的
- 迭代器对象判断的本质是看是否内置有__iter__和__next__
2.迭代器对象的作用
- 提供了一种不依赖于索引取值的方式
- 正因为有迭代器的存在,我们的字典、集合才能够被for循环
3.迭代器对象实操
s1 = 'hello' # 可迭代对象
res = s1.__iter__() # 迭代器对象
print(res.__next__()) # 迭代取值 for循环的本质
# h
# 一旦__next__取不到值 会直接报错
4.注意事项
- 可迭代对象调用__iter__会成为迭代器对象,迭代器对象如果还调用__iter__不会有任何变化,还是迭代器对象本身。
for循环的本质
for 变量名 in 可迭代对象:
循环体代码
"""
1.先将in后面的数据调用__iter__转变成迭代器对象
2.依次让迭代器对象调用__next__取值
3.一旦__next__取不到值报错 for循环会自动捕获并处理
"""
异常处理
1、异常是指代码运行报错,俗语bug。
2、代码运行中一旦遇到异常会直接结束整个程序的运行,所以在编写代码时要尽可能避免。
3、当python脚本发生异常时我们需要捕获处理它,否则程序会终止执行。
1、异常分类
- 语法错误:不允许出现,一旦出现要立即改正
- 逻辑错误:允许出现,因为这种错误一眼发现不了,代码运行之后才可能会出现
2、异常结构
- 错误位置
- 错误类别
- 错误详情