首页 > 编程 > Python > 正文

在Python程序员面试中被问的最多的10道题

2020-02-16 10:57:39
字体:
来源:转载
供稿:网友

我们在为大家整Python程序员面试试题中,发现了一些被面试官问到的最多的一些问题,以下就是本篇内容:

Python是个非常受欢迎的编程语言,随着近些年机器学习、云计算等技术的发展,Python的职位需求越来越高。下面我收集了10个Python面试官经常问的问题,供大家参考学习。

类继承

有如下的一段代码:

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,但是用完了记得修改回来。

方法对象

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

class A(object):def __init__(self,a,b):self.__a = aself.__b = bdef myprint(self):print 'a=', self.__a, 'b=', self.__ba1=A(10,20)a1.myprint() a1(80)

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

class A(object):def __init__(self, a, b):self.__a = aself.__b = bdef myprint(self):print 'a=', self.__a, 'b=', self.__bdef __call__(self, num):print 'call:', num + self.__a

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", aif 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 5B INITB fnNEW 20INIT 20A fn

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

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

答案:

[3, 4] [6, 8]{2: 4, 4: 16, 6: 36}{2: 'item4', 4: 'item16', 6: 'item36'}set(['h', 'r', 'd'])

全局和局部变量

下面这段代码输出什么?

num = 9def f1():num = 20def f2():print num f2()f1()f2()

答案:

99

num不是个全局变量,所以每个函数都得到了自己的num拷贝,如果你想修改num,则必须用global关键字声明。比如下面这样

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表