Python面试总结复习(四)
1.数据库优化,数据库索引,索引的详细知识点
2.python中数据类型,哪些可变,哪些不可变
可变:列表,字典,集合
不可变:数字,字符串,元组
3.列表和元组排序
列表
正向排序
sort() list1=[1,3,7,4,6] list1.sort() #[1,3,4,6,7]
sorted() sorted([1,6,3,4,5]) #[1,3,4,5,6]
sort与sorted区别: sort是永久的,而sorted是临时的
逆向排序
list1=[1,3,7,4,6] list1.sort(reverse=True) #[7,6,4,3,1]
sorted([1,6,3,4,5],reverse=True) #[6,5,4,3,1]
反转排序
list1=[1,3,7,4,6] list1.reverse() #[6,4,7,3,1]
元组
元组排序可通过list函数将元组转换成列表,采用列表排序方法即可。
字典
通过key排序
4.手写一个装饰器,并打印函数内参数
装饰器是从闭包函数过来的,闭包函数就是定义在内部的函数引用外部函数的变量
def outter(func): def inner(*args,**kwargs): res=func(*args,**kwargs) #res=index(*args,**kwargs) print(args,kwargs) print(res) return inner @outter #index=outter(index) def index(a,b): return '原函数' index(2,b=2) #inner(2,b=2) #结果 (2,) {'b': 2} 原函数
5.序列化,为什么使用序列化,哪些数据可以序列化
使用json模块实现序列化
因为基于网络传输的数据都是二进制的,但是写入文件的数据必须是字符串,所以需要将数据格式进行转换。
json.dumps:将其他类型的数据转换成json格式的字符串 (序列化)
json.loads:将json格式的字符串转换成其他格式数据类型 (反序列化)
支持的数据类型:str,list,tuple,int,dict
6.迭代器与生成器的区别
迭代器:迭代器即迭代的工具,迭代是一个重复的过程,每次重复就是一次迭代,并且每次迭代的结果就是下一次迭代的初始值。 对于没有索引的数据类型,必须提供一种不依赖索引的迭代方式,所以产生了迭代器 迭代器定义:可迭代对象执行__iter__方法,得到结果就是迭代器,迭代器对象有__iter__和__next__方法(可迭代对象有str,list,tuple,set等),
__iter__返回迭代器本身,__next__返回容器的下一个值,如果容器中没有元素了,则抛出异常。
生成器就是用户自定义的迭代器,可以理解为一个更加优雅的迭代器(他不需要实现__iter__和__next__方法),也实现了迭代器的协议,它也可以通过next()取出元素。 生成器主要分为两种类型: 1.函数内部加了关键字yield就变成生成器 代码运行到yield的时候会停止,需要__next__取出yield后面的值 2.生成器表达式返回得到的生成器 g=(i for i in (1,2,3)) yield关键字生成的生成器传参方法:使用send方法 对象.send('需要传递的数据')