一、重要内置函数

1. zip

说白了就是压缩几组数据值,说细了就是将可迭代对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,一般会用listdict方法输出为对应的类型,当对象为多个的时候,会根据数据值最少的那个参数为输出的个数,多余的部分就不会输出了

# 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)]

当我们使用zip方法压缩后还可以解压,使用方法为:zip(*+变量名):

aa = [(1,2), (2,3), (3,4)]
a, b = zip(*aa)
print(a)
print(b)
(1,2,3)
(2,3,4)

2. filter

filter函数是筛选的意思:此函数会将可迭代对象中的每一位元素作为参数传递到func中,如果结果为True,则将此元素添加到结果列表中,filter()返回的结果是一个新的列表
表现形式:filter(func,iterable)
其中func为函数名,可为lambda匿名函数,iterable为可迭代对象

# filter
l1 = [11,22,33,44,55,66,77,88]
res = filter(lambda x: x > 40, l1)
print(list(res))
# [44,55,66,77,88]

这里filter函数在匿名函数的作用下达成的功能是判断列表l1中的值,如果根据匿名函数的条件得出这个数据值大于40就把记录到结果中用res输出结果

3.sorted

sort方法大家一定很眼熟,他是列表的升序排列,到了内置函数sorted中也一样的作用
表现形式:sorted(iterable,key=None,rever=False)
iterale-可迭代对象
key -主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取决自于可迭代对象中,指定可迭代对象中的一个元素来进行排序,(说白了就是弄个函数加了条件)
reverse -排序规则,reverse = True降序,reverse = False升序(默认)

# sorted
l1 = [21, 12, 53, 64, 76, 32, 11, 22]
res = sorted(l1)
print(res)	# 默认升序
# [11,12,21,22,32,53,64,76]

下面是key加入函数的例子:

b = {1: 'ab', 2:'degg', 4:'ght',9:'d'}

res1 = sorted(b.items(), key=lambda i: i[0])	# 指定按字典里面的键排序
print(res1)

[(1,'ab'),(2,'degg'),(4,'ght'),(9,'d')]

res2 = sorted(bitems(), key=lambda i: len(i[1]))	# 指定按字典里面的value长度排序,默认从小到大
print(res2)

[(9, 'd'), (1, 'ab'), (4, 'ght'),(2, 'degg')]

res3 = sorted(b.items(), key=lambda i: len(i[1]), reverse=True)		# 指定按字典里的value长度排序,同时进行翻转,即按value的长度从大到小排序
print(res3)

[(2, 'degg'), (4, 'ght'). (1, 'ab'), (9, 'd')]

二、常见内置函数(了解)

1.abs

abs的作用很好理解,就是把数值变成绝对值,也就是变成正数

print(abs(-100))
print(abs(100))
# 100
# 100

2.all

对条件进行判断,如果给定的所有条件都对就返回True,否则就返回False,可以和and的作用放一起记忆

3.any

对条件进行判断,如果给定的条件里面有一个对就返回True,都错的时候返回False,可以和or的作用放一起记忆

4.bytes

相当与encode的作用,对给定的数据值进行编码,会转换成bytes(二进制类型)

s1 = '今天周五 内容也很简单'
print(s1.encode('utf8'))
print(bytes(s1, 'utf8'))
# b'\xe4\xbb\x8a\xe5\xa4\xa9\xe5\x91\xa8\xe4\xba\x94 \xe5\x86\x85\xe5\xae\xb9\xe4\xb9\x9f\xe5\xbe\x88\xe7\xae\x80\xe5\x8d\x95'
# b'\xe4\xbb\x8a\xe5\xa4\xa9\xe5\x91\xa8\xe4\xba\x94 \xe5\x86\x85\xe5\xae\xb9\xe4\xb9\x9f\xe5\xbe\x88\xe7\xae\x80\xe5\x8d\x95'

5.bin、oct、hex、int

进制转换的函数,分别是:二进制、八进制、十六进制、十进制

6.callable

用于判断这个变量名加了括号是不是就能调用了,返回的结果是布尔值

name = 'jason'
def index():
	print('form index')
print(callable(name))	# False
print(callable(index))	# True

7、chr、ord

根据ASCII对应的数值或是根据字符对应的数据值返回结果,chr是根据数值返回字符,ord是根据字符返回数据值

8、dir

我们可以通过这个函数查看括号内的对象能调用的方法或函数

print(dir('hello'))

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

两种函数都是一个作用:把字符串的代码运行
其中eval只能运行一些简单的代码
exec可以运行复杂一些的代码,比如开个for循环

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(函数名, 要遍历的数据)  # 内部本质就是for循环,再记住两个参数的位置和作用
max	# 求出列表中最大值
# l = [1, 2, 10, 30, 5, 6, 7, 8]
# print(max(l))
min	# 求出最小值
# print(min(l))

15、open

> 用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写,在之前问文本编辑知识点可以找到详细操作方法,这里就举个例子:
```python
with open() as f1:
    pass
f2 = open()

16、pow

返回 xy(x的y次方) 的值
pow(x, y[, z])

17、range

之前讲for循环的时候介绍过,作用是生成一个工厂,生成数据,python2和python3中的作用有所区别python2中的xrangepython3range作用一样

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. 什么是异常?
	# 异常就是错误发生的信号,如果此信号不做处理,那么,从本行开始之后的代码都不能正常执行了
2. 异常
	2.1 Traceback
    2.2 XXXError
    	# 错误的类型
    2.3   XXXError冒号后面的内容,报错的详细原因,我们主要看的也是这部分,大致定位错误的原因 
3. 异常的种类
	1. 语法错误
    	# 是坚决不允许的,遇到之后要立刻改正,否则,代码不能运行
    2. 逻辑错误
    	# 是可以被允许的,但是,我们写逻辑的时候要尽可能的避免逻辑错误的发生
4. 如何捕捉异常
	try:
      	被监测的代码
    except 错误的类型1 as e:
        错误处理,e:错误的原因
    except 错误的类型2 as e:
        错误处理,e:错误的原因
    except 错误的类型3 as e:
        错误处理,e:错误的原因
    except 错误的类型4 as e:
        错误处理,e:错误的原因
        
 '''万能异常'''
try:
    # print(username)
    # print(1/ 0)
    # l = [1,2,3,4]
    # print(l[6])
    d = {'a':1, 'b':2}
    print(d['c'])  #KeyError
except ZeroDivisionError as e:
    print('')
except NameError as e:
    print(123)
except IndexError as e:
    print(123)
except Exception as e:
    print(e) # name 'username' is not defined
    
    
    
"""
	try except异常捕捉需要注意
    	1. try里面被监测的代码尽量少
    	2. 在明显没有错误的代码不要被捕捉
"""

错误类型
FloatingPointError 浮点计算错误

BaseException 所有异常的基类

SystemExit 解释器请求退出

Exception 常规错误的基类

StandardError 所有的内建标准异常的基类

ArithmeticError 所有数值计算错误的基类

EOFError 没有内建输入,到达EOF 标记

EnvironmentError 操作系统错误的基类

WindowsError 系统调用失败

LookupError 无效数据查询的基类

KeyError 映射中没有这个键

MemoryError 内存溢出错误(对于Python 解释器不是致命的)

UnboundLocalError 访问未初始化的本地变量

ReferenceError 弱引用(Weak reference)试图访问已经垃圾回收了的对象

RuntimeError 一般的运行时错误

NotImplementedError 尚未实现的方法

SyntaxError Python 语法错误

TabError Tab 和空格混用

SystemError 一般的解释器系统错误

UnicodeError Unicode 相关的错误

UnicodeDecodeError Unicode 解码时的错误

UnicodeEncodeError Unicode 编码时错误

UnicodeTranslateError Unicode 转换时错误

以下为警告类型

Warning 警告的基类

DeprecationWarning 关于被弃用的特征的警告

FutureWarning 关于构造将来语义会有改变的警告

OverflowWarning 旧的关于自动提升为长整型(long)的警告

PendingDeprecationWarning 关于特性将会被废弃的警告

RuntimeWarning 可疑的运行时行为(runtime behavior)的警告

SyntaxWarning 可疑的语法的警告

UserWarning 用户代码生成的警告