目录
一.重要内置函数
1.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)]
l1 = [11, 22, 33]
l2 = ['jason', 'kevin', 'oscar', 'jerry', 'tony']
l3 = [1, 2, 3, 4]
res = zip(l1, l2, l3)
print(list(res))
# [(11, 'jason', 1), (22, 'kevin', 2), (33, 'oscar', 3)]
"""补充:
和 Python 3.x 版本不同,Python 2.x 版本中的 zip() 函数会直接返回列表,而不是返回 zip 对象。但是,返回的列表或者 zip 对象,其包含的元素(都是元组)是相同的。"""
2.filter
filter函数(过滤器),筛选方式是采用传入的函数, 去循环数据组中每一个数据,然后将结果为Ture的添加到结果列表中,filter()返回的结果是一个新的列表
l1 = [11, 22, 33, 44, 55, 66, 77, 88]
res = filter(lambda x: x > 40, 11)
print(list(res))
# [44, 55, 66, 77, 88]
3.sorted
与sort()的使用方法类似,默认是升序
l1 = [21, 12, 53, 64, 76, 32, 11, 22]
res = sorted(l1)
print(res)
# [11, 12, 21, 22, 32, 53, 64, 76]
二.常见内置函数了解
1.abs() 绝对值
print(abs(-100)) # 100
print(abs(100)) # 100
2.all()
对条件进行判断,如果给定的条件里面都对就返回Ture,否则就返回False
print(all([0, 1, 2, 3]))
print(all([1, 2, 3, True]))
3.any()
所有数据值对应的布尔值,有一个为True结果就是True 否则返回False
print(any([0, None, '', 1])) # Ture
print(any([0, None, ''])) # False
4.bin()、oct()、hex()、int()
这些是进制转换到函数:二进制,八进制,十六进制,十进制
5.bytes()
转换成bytes类型
s1 = '今天周五,明天周六'
print(s1.encode('utf8'))
print(bytes(s1, 'utf8'))
6.callable()
判断名字是否可以加括号调用
name = 'jason'
def index():
print('from index')
print(callable(name)) # Fallse
print(callable(index)) #Ture
7.chr() ord()
基于ASSCII码表做数字与字母的转换·
print(chr(65)) # A
print(ord('A')) #65
8.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']
9.divmod()
对数据值进行整除,并且可以获得余数
res = divmod(100, 2)
print(res) # (50, 0)
res = divmod(100, 3)
print(res) # (33, 1) 前面的结果是整除的结果,后面是余数
10.enumerate()
枚举 用于将一个可遍历的数据对象(如列表、元组、字符串)组合为一个索引序列,同时列出数据和数据下标,一般结合for循环使用(可人为指定下表开始的数据值):
print(list(enumerate(["a", "b", "c"])))
[(0, 'a'), (1, 'b'), (2, 'c')]
11.eval() exec()
能够识别字符串中的python代码并执行
eval只能执行一些简单的python代码,具有逻辑性的都不行
exec可以识别具有一定逻辑性的python代码
s1 = 'print("哈哈哈")'
eval(s1)
exec(s1)
s2 = 'for i in range(100):print(i)'
eval(s2) # 只能识别简单的python代码 具有逻辑性的都不行,这里会报错
exec(s2) # 可以识别具有一定逻辑性的python代码
12.hash()
加密 使用哈希算法对数据值加密
print(hash('jason'))
# 6504587676088172780
13.id() input() isinstance()
id 返回对象的唯一标识符,标识符是一个整数(返回对象的内存地址)
input 用于接收外界输入的信息
isinstance
判断一个对象是否是一个已知的类型,类似type()
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
14.map() max() min()
map 映射
max 返回最大值
min 返回最小值
15.open()
用于打开一个文件
16.pow()
幂指数(次方)
print(pow(2, 2)) # 4
print(pow(2, 3)) # 8
print(pow(2, 4)) # 16
17.range()
之前讲for循环的时候介绍过,作用是生成一个工厂,生成数据,python2和python3中的作用有所区别python2中的xrange和python3的range作用一样。
18、round
对数值进行四舍五入,但是不太准确,可能是五舍六入。
19、sum
sum(list) : 求取list元素的和
三.可迭代对象
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循环的本质
一旦__next__取不到值 会直接报错
4.注意事项
可迭代对象调用__iter__会成为迭代器对象 迭代器对象如果还调用__iter__不会有任何变化 还是迭代器对象本身
五.for循环的本质
for 变量名 in 可迭代对象:
循环体代码
"""
1.先将in后面的数据调用__iter__转变成迭代器对象
2.依次让迭代器对象调用__next__取值
3.一旦__next__取不到值报错 for循环会自动捕获并处理
"""
六.异常捕获/处理
1.异常
异常就是代码运行报错 行业俗语叫bug
代码运行中一旦遇到异常会直接结束整个程序的运行 我们在编写代码的过程中药尽可能避免
2.异常分类
语法错误
不允许出现 一旦出现立刻改正 否则提桶跑路
逻辑错误
允许出现的 因为它一眼发现不了 代码运行之后才可能会出现
3.异常结构
错误位置
错误类型
错误详情