11.27python面试题每日分享-剑指offer
1、简述面向对象中_new_和_init_区别
_init_是初始化方法,创建对象后,就立刻被默认调用了,可接收参数
1.1_new_至少要有一个参数cls,代表当前类,此参数在实例化时由Python解释器自动识别
1.2_new_必须要有返回值,返回实例化出来的实例,这点在自己实现_new_时要特别注意,可以return父类(通过super(当前类名, cls)) _new_出来的实例,或者直接是object的__new_出来的实例
1.3_init_有一个参数self,就是这个_new_返回的实例,_init_在_new_的基础上可以完成一些其它初始化的动作,_init_不需要返回值
1.4如果_new_创建的是当前类的实例,会自动调用
_init_函数,通过return语句里面调用的_new_函数的第一个参数是cls来保证是当前类实例,如果是其他类的类名,;那么实际创建返回的就是其他类的实例,其实就不会调用当前类的_init_函数,也不会调用其他类的__init_函数。
2.简述with方法打开处理文件帮我我们做了什么?
打开文件在进行读写的时候可能会出现一些异常状况,如果按照常规的f.open写法,我们需要try,except,finally,做异常判断,并且文件最终不管遇到什么情况,要执行finally f.close()关闭文件,with方法帮我们实现了finally中f.close
(当然还有其他自定义功能,有兴趣可以研究with方法源码)
3.列表[1,2,3,4,5],请使用map()函数输出[1,4,9,16,25],并使用列表推导式提取出大于10的数,最终输出[16,25]
map ()函数第一个参数是fun,第二个参数是一般是list,第三个参数可以写list,也可以不写根据需求
4.python中生成随机整数、随机小数、0–1之间小数方法
随机整数: random.randint(a,b),生成区间内的整数
随机小数:习惯用numpy库,利用np.random.randn(5)生成5个随机小数
0-1随机小数: random.random(),括号中不传参
5.避免转义给字符串加哪个字母表示原始字符串?
r,表示需要原始字符串,不转义特殊字符