概述

Python是个非常受欢迎的编程语言,随着近些年机器学习、云计算等技术的发展,Python的职位需求越来越高。下面我收集了10个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:

returnsuper(A, cls).__new__(cls)

returnB()

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 foriinls if i>2]

print list1

list2 = [i*2 foriinls if i>2]

print list2

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

print dic1

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

print dic2

set1 = {x forxin'hello world'if xnotin'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

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

num = 9

def f1():

globalnum

num = 20

def f2():

print num

f2()

f1()

f2()

# prints:

# 9

# 20

6、交换两个变量的值

一行代码交换两个变量值

a=8

b=9

答案:

(a,b) = (b,a)

7、默认方法

如下的代码

class A(object):

def __init__(self,a,b):

self.a1 = a

self.b1 = b

print 'init'

def mydefault(self):

print 'default'

a1 = A(10,20)

a1.fn1()

a1.fn2()

a1.fn3()

方法 fn1/fn2/fn3 都没有定义,添加代码,是没有定义的方法都调用mydefault函数,上面的代码应该输出

defaultdefaultdefault

答案:

class A(object):

def __init__(self,a,b):

self.a1 = a

self.b1 = b

print 'init'

def mydefault(self):

print 'default'

def __getattr__(self,name):

returnself.mydefault

a1 = A(10,20)

a1.fn1()

a1.fn2()

a1.fn3()

方法__getattr__只有当没有定义的方法调用时,才是调用他。当fn1方法传入参数时,我们可以给mydefault方法增加一个*args不定参数来兼容。

class A(object):

def __init__(self,a,b):

self.a1 = a

self.b1 = b

print 'init'

def mydefault(self,*args):

print 'default:'+ str(args[0])

def __getattr__(self,name):

print "other fn:",name

returnself.mydefault

a1 = A(10,20)

a1.fn1(33)

a1.fn2('hello')

a1.fn3(10)

8、包管理

一个包里有三个模块,mod1.py, mod2.py, mod3.py,但使用from demopack import *导入模块时,如何保证只有mod1、mod3被导入了。

答案:增加__init__.py文件,并在文件中增加:

__all__ = ['mod1','mod3']

9、闭包

写一个函数,接收整数参数n,返回一个函数,函数的功能是把函数的参数和n相乘并把结果返回。

答案:

def mulby(num):

def gn(val):

returnnum * val

returngn

zw = mulby(7)

print(zw(9));

10、性能

解析下面的代码慢在哪

def strtest1(num):

str='first'

foriinrange(num):

str+="X"

returnstr

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

【编辑推荐】

【责任编辑:庞桂玉 TEL:(010)68476606】

点赞 0

python面试常见问题-10个Python面试常问的问题相关推荐

  1. python面试常见问题-Python面试常见问题,涉及Python各个方面

    原标题:Python面试常见问题,涉及Python各个方面 爬虫面试常见问题 一.项目问题: 1.你写爬虫的时候都遇到过什么反爬虫措施,你是怎样解决的 2.用的什么框架.为什么选择这个框架 二.框架问 ...

  2. python趣味编程10例-Python趣味编程与精彩实例

    Python趣味编程与精彩实例 共19 章,前12章主要以Python 基础知识如文件创建.输出与变量.输入与判断.运算符和循环.列表和字典.函数编程.pygame的各种知识为主,13-19章则以游戏 ...

  3. python小程序-10个Python练手小程序,学习python的很好的资料

    [程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. ...

  4. 面试常见问题_软件实施工程师面试中的常见问题都有哪些呢?

    软件实施工程师面试中的常见问题都有哪些呢? 首先需要看你自己找什么样的工资,是新手呢 还是老手呢?对于软件实施的一些新手来说,那么相对应来说要看重的是人品的一个问题,因为毕竟他们家的是新手,所以对于一 ...

  5. python趣味编程10例-Python趣味编程 20行代码实现读心术

    秘读心术 这是一个吉卜赛人古老的神秘读心术,它能测算出你内心的感应.百试不爽,非常的可怕.在心中从10~99之间任意挑选一个数,用这个数先减去它自己的十位数再减去它的个位数,得到最终的数.在图表中找出 ...

  6. 阿里python面试题和答案_阿里的python大牛总结10条Python面试题陷阱,中招了吗?...

    每年的3-4月份是跳槽的高峰期,无论是应聘Python web开发,爬虫工程师,或是数据分析,还是自动化运维,都涉及到一些基础的知识!我挑了一些Python的基础面试题,看看你能不能的答上来,也许面试 ...

  7. python爬虫实例-10个python爬虫入门实例

    昨天带伙伴萌学习python爬虫,准备了几个简单的入门实例 涉及主要知识点: web是如何交互的 requests库的get.post函数的应用 response对象的相关函数,属性 python文件 ...

  8. python趣味编程10例-Python趣味编程与精彩实例,码高少儿编程 编

    1 Python基础知识OWa少儿编程网-Scratch_Python_教程_免费儿童编程学习平台 1.1 简介OWa少儿编程网-Scratch_Python_教程_免费儿童编程学习平台 1.2 诞生 ...

  9. 【Python】这10个Python性能调优的小技巧,你知道几个?

    这篇文章关于Python性能调优的10个小技巧,每天花5-10分钟阅读我的文章,对你技术提升一定会有帮助. 1 多多使用列表生成式 替换下面代码: cube_numbers = []for n in ...

最新文章

  1. 【教程】简易CDQ分治教程学习笔记
  2. FreeRTOS(四)——内存管理
  3. B站疯传,一整套Java学习资料,白拿不谢,叫我雷锋!
  4. Codeforces Round #443 (Div. 2) B. Table Tennis
  5. Starry Night [USACO]
  6. 常用器件选型——电源篇
  7. Java常见面试题及答案汇总
  8. python函数-装饰器
  9. 兄弟mfc9140cdn无法识别_我共享了Brother打印设备。现在只能打印但无法扫描,该如何解决? .| Brother...
  10. 9.2 配置rsync+inotify实时同步
  11. Tecplot RS 2020 R1安装教程及新功能
  12. npm install报错error 404 Not Found - GET httpsregistry.npm.taobao.org@xt
  13. Bug解决-RuntimeError: Sizes of tensors must match except in dimension 2. Got 320 and 160 (The offendin
  14. 小白学java_day1
  15. Navicat premium 导入大数据的Excel文件失败的方法
  16. 【Android UI设计与开发】5.底部菜单栏(二)使用Fragment实现底部菜单栏
  17. Abp 构造注入服务接口后运行报错 Host terminated unexpectedly!
  18. sql 纵向求和_SQL里边的求和语句怎么写
  19. Xilinx平台Aurora IP介绍(汇总篇)
  20. 支持web信息分类的高性能蜘蛛程序 爬虫程序 spider

热门文章

  1. SQL UNION 操作符
  2. 原生JS和jQuery操作DOM的区别小结
  3. python django -5 进阶
  4. [原创]一起来做网页游戏---前言
  5. NOI2004 郁闷的出纳税——SBT应用
  6. flex布局的相关注意事项
  7. 数据结构 - 静态单链表的实行(C语言)
  8. python学习(二十三) String(下) 分片和索引
  9. cannot resolve symbol
  10. [poj3254] Corn Fields