Python面试常问的九个问题
1、关于类继承问题:有如下的一段代码:--------------------------------------------class A(object): def show(self): print 'base show'class B(A): def show(self): print 'derived show'obj = B()obj.show()--------------------------------------------如何调用类A的show方法?
2、关于方法对象问题问题:为了让下面这段代码运行,需要增加哪些代码?-----------------幻腾寂埒-----------------------------------class A(object): def __init__(self,a,b): self.__a = a self.__b = b def myprint(self): print 'a=', self.__a, 'b=', self.__ba1=A(10,20)a1.myprint()a1(80)----------------------------------------------------
3、关于new和init问题下面这段代码输出限鬃鹣哺什么?--------------------------幻腾寂埒---------------------class B(object): def fn(self): print 'B fn' def __init__(self): print "B INIT"class A(object): def fn(self): print 'A fn' def __new__(cls,a): print "NEW", a if a>10: return super(A, cls).__new__(cls) return B() def __init__(self,a): print "INIT", aa1 = A(5)a1.fn()a2=A(20)a2.fn()-----------------------------------------------
4、关于Python list和dict生成问题下面这段代码输出什么?---------------------------------------------ls = [1,2,3,4]list1 = [i for i in ls if i>2]print list1list2 = [i*2 for i in ls if i>2]print list2dic1 = {x: x**2 for x in (2, 4, 6)}print dic1dic2 = {x: 'item' + str(x**2) for x in (2, 4, 6)}print dic2set1 = {x for x in 'hello world' if x not in 'low level'}print set1---------------------------------------------
5、关于全局和局部变量问题下面这段代码输出什么?-------------------------------num = 9def f1(): num = 20def f2(): print numf2()f1()f2()-------------------------------
6、关于交换两个变量的值的问题一行代码交换两个变量值a=8b=9答案:(a,b) = (b,a)
7、关于包管理的问题一个包里有三个模块,mod1.py, mod2.py, mod3.py,但使用from demopack import *导入模块时,如何保证只有mod1、mod3被导入了。答案:增加__init__.py文件,并在文件中增加:__all__ = ['mod1','mod3']
8、关于闭包的问题写一个函数,接收整数参数n,返回一个函数,函数的功能是把函数的参数和n相乘并把结果返回。
9、关于Python性能问题解析下面的代码慢在哪--------------------------------------def strtest1(num): str='first' for i in range(num): str+="X" return str--------------------------------------答案:python的str是个不可变对象,每次迭代,都会生成新的str对象来存储新的字符串,num越大,创建的str对象越多,内存消耗越大。