python 经典面试题_常见python面试题及答案汇总

Python作为一种新兴语言,广受欢迎,随着机器学习、云计算等技术的发展,Python职业需求越来越高,接下来IT培训网就汇总了一些常见Python面试题及答案,供大家参考学习。

wsh0222001.jpg

常见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方法了。

方法如下:

obj.__class__ = Aobj.show()

__class__方法指向了类对象,只用给他赋值类型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.__b

a1=A(10,20)

a1.myprint()

a1(80)

答案:为了能让对象实例能被直接调用,需要实现__call__方法

class A(object):

def __init__(self, a, b):

self.__a = a

self.__b = b

def myprint(self):

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

def __call__(self, num):

print 'call:', num + self.__a

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()

答案:

NEW 5

B INIT

B fn

NEW 20

INIT 20

A fn

使用__new__方法,可以决定返回那个对象,也就是创建对象之前,这个可以用于设计模式的单例、工厂模式。__init__是创建对象是调用的。

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

答案:

[3, 4]

[6, 8]

{2: 4, 4: 16, 6: 36}

{2: 'item4', 4: 'item16', 6: 'item36'}

set(['h', 'r', 'd'])

5、全局和局部变量

下面这段代码输出什么?

num = 9

def f1():

num = 20

def f2():

print num

f2()

f1()

f2()

答案:

9

9

求职要想取得成功,就要在不断的学习中提升技能,在永远止境的知识海洋中吸取知识,需要一定的技巧与经验总结。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值