Python面试常问的九个问题

2025-10-10 06:36:51

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方法?

Python面试常问的九个问题

2、关于方法对象问题

问题:为了让下面这段代码运行,需要增加哪些代码?

----------------------------------------------------

class A(object):    

      def __init__(self,a,b):        

             self.__a = a        

             self.__b = b    

      def myprint(self):        

            print 'a=', self.__a, 'b=', self.__b 

a1=A(10,20)

a1.myprint()

a1(80)

----------------------------------------------------

Python面试常问的九个问题

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", a 

 a1 = A(5)

a1.fn()

a2=A(20)

a2.fn()

-----------------------------------------------

Python面试常问的九个问题

4、关于Python list和dict生成问题

下面这段代码输出什么?

---------------------------------------------

ls = [1,2,3,4]

list1 = [i for i in ls if i>2]

print list1 

list2 = [i*2 for i in ls if i>2]

print list2 

dic1 = {x: x**2 for x in (2, 4, 6)}

print dic1 

dic2 = {x: 'item' + str(x**2) for x in (2, 4, 6)}

print dic2 

set1 = {x for x in 'hello world' if x not in 'low level'}

print set1

---------------------------------------------

Python面试常问的九个问题

5、关于全局和局部变量问题

下面这段代码输出什么?

-------------------------------

num = 9

def f1():    

       num = 20

def f2():    

      print num

f2()

f1()

f2()

-------------------------------

Python面试常问的九个问题

6、关于交换两个变量的值的问题

一行代码交换两个变量值

a=8

b=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相乘并把结果返回。

Python面试常问的九个问题

9、关于Python性能问题

解析下面的代码慢在哪

--------------------------------------

def strtest1(num):    

       str='first'    

       for i in range(num):        

             str+="X"   

       return str

--------------------------------------

答案:

python的str是个不可变对象,每次迭代,都会生成新的str对象来存储新的字符串,num越大,创建的str对象越多,内存消耗越大。

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢