1. mro是什么
method resolution Order,方法解析顺序,方法调用时需要对当前类和基类进行搜索以确定方法艘在的位置,而搜索的顺序就是 方法解析顺序
2. 什么是c3算法
为了解决原来基于深度优先算法不满足本地优先级和单调性的问题,
本地优先级:声明时父类的顺序,C(A,B)
3. 面向对象中带双下划线的特殊方法
__setattr__:添加/修改属性时会触发
__delattr__:删除属性时触发
4. 双下划线和单下划线的区别
单:保护变量。只有类对象和子类对象能访问到这些变量
双:私有成员,只有类对象能访问,子类对象不能访问
5.上下文context你知道吗?(with的用法,如果类需要支持with语句,应该如何书写?)
基本格式 with context_expression [as target(s)]: with - body 这里context_expression要返回一个上下文管理器对象, 该对象并不赋值给as中的target(s),如果制定了as子句的话,会将上下文管理器的__enter__()和__exit__()两个方法context_manager.__enter__():进入上下文管理器的运行时上下文,在语句执行前调用,。with语句将该方法返回值赋值给as子句中的target,
6. 实现一个Singleton单例类,要求遵循基本语言编程规范(用尽量多的方式)
通过函数返回一个对象、装饰器实现、__new__
希望某一个对象仅在程序中出现一次,之后所有调用使用同一个对象
__new__
class RedisClient:
_instance = None
@classmethod
def __new__(cls, *args, **kwargs):
if not cls._instance:
cls._instance = redis.StrictRedis(**REDIS_CONFIG, bd=0)
return cls._instance
if __name__ == ‘__main__‘:
r=RedisClient()
单例模式的优点核应用?
1.节省空间,全局内只有一个实例
2.数据库配置、数据库连接池
3.网站计数器
7. json序列化时,默认遇到中文会换成unicode,想保留中文怎么办?
json.dump({"ddf":"你好“”}, ensure_ascii = Flase)
8. 用python匹配HTMLtag的时候,<.*>和<.*?>有什么区别?
<.*>贪婪匹配,匹配所有
<.*?>非贪婪匹配,匹配到第一个就停了
9.如何判断一个邮箱合法
import re
if re.match(r‘^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\.[a-zA-Z0-9_-]+)+$‘, email):
print(‘right‘)
else:
print(‘wrong‘)
10. 用列表生成式写一个0-100的列表
a = [i for i in range(100)]
11, 用列表生成式写一个取0-100的技术
b= [i for i in range(100) if i%2 != 0]
c = [i for i in range(1,100,2)]
range可以设置步长
切片:字符串也有下标,【开始的下标:长度】
s = “hello world”
a = s[0:5]
切片加步长,每隔2个切一个[0:100:2]
d = [i for i in range(100)[::2]]
12.将类表中重复的元素过滤
lis = [1,2,2,3,3,5]
list(set(lis))
counter = {}定义一个计数器,用来保存元素在列表中出现的次数
for i in lis:
if
13.列表和元组的去表
li = []
tu = (1,2,3,4)#元组的元素不可变
14. 迭代器与生产器的区别
x = [1,2,3,4,5]
y = range(1,6)
list保存完整的值
generator不保存值
是什么:可以边迭代边计算,占用内存小
为什么要用:list中值都会存在内存中,当有大量数据时,且仅适用list中部分值,那么不适用的值就浪费了,生成器解决了这个问题
创建生成器:①将[1,2,3]改为(1,2,3)②当函数中使用了yield关键字,那么这个函数是一个generator,调用函数就是创建了一个生成器对象。
原理:生成器有一个next()方法,可以重复调用next()对象向生成器中取值,并且yield在return后会记住当前位置,并下次调用时从yield下一条语句开始执行
15.进程与线程的区别
线程是程序运行的最小单位
进程是操作系统管理的最小单元
进程可能包括好几个线程
16.说一下python中的多线程特点
一般编程语言中多线程可以利用CPU的多核心
python的多线程有GLI全局锁,不能真正意义上多核心
10.python怎么利用多核心
可以利用多进程实现
原文:https://www.cnblogs.com/liuhui666/p/13377449.html