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('需要传递的数据')

 

posted @ 2020-04-15 23:09  只会玩辅助  阅读(226)  评论(0编辑  收藏  举报