python面试常见问题-10个Python面试常问的问题
概述
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面试常问的问题相关推荐
- python面试常见问题-Python面试常见问题,涉及Python各个方面
原标题:Python面试常见问题,涉及Python各个方面 爬虫面试常见问题 一.项目问题: 1.你写爬虫的时候都遇到过什么反爬虫措施,你是怎样解决的 2.用的什么框架.为什么选择这个框架 二.框架问 ...
- python趣味编程10例-Python趣味编程与精彩实例
Python趣味编程与精彩实例 共19 章,前12章主要以Python 基础知识如文件创建.输出与变量.输入与判断.运算符和循环.列表和字典.函数编程.pygame的各种知识为主,13-19章则以游戏 ...
- python小程序-10个Python练手小程序,学习python的很好的资料
[程序1] 题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位.十位.个位的数字都是1.2.3.4.组成所有的排列后再去 掉不满足条件的排列. ...
- 面试常见问题_软件实施工程师面试中的常见问题都有哪些呢?
软件实施工程师面试中的常见问题都有哪些呢? 首先需要看你自己找什么样的工资,是新手呢 还是老手呢?对于软件实施的一些新手来说,那么相对应来说要看重的是人品的一个问题,因为毕竟他们家的是新手,所以对于一 ...
- python趣味编程10例-Python趣味编程 20行代码实现读心术
秘读心术 这是一个吉卜赛人古老的神秘读心术,它能测算出你内心的感应.百试不爽,非常的可怕.在心中从10~99之间任意挑选一个数,用这个数先减去它自己的十位数再减去它的个位数,得到最终的数.在图表中找出 ...
- 阿里python面试题和答案_阿里的python大牛总结10条Python面试题陷阱,中招了吗?...
每年的3-4月份是跳槽的高峰期,无论是应聘Python web开发,爬虫工程师,或是数据分析,还是自动化运维,都涉及到一些基础的知识!我挑了一些Python的基础面试题,看看你能不能的答上来,也许面试 ...
- python爬虫实例-10个python爬虫入门实例
昨天带伙伴萌学习python爬虫,准备了几个简单的入门实例 涉及主要知识点: web是如何交互的 requests库的get.post函数的应用 response对象的相关函数,属性 python文件 ...
- python趣味编程10例-Python趣味编程与精彩实例,码高少儿编程 编
1 Python基础知识OWa少儿编程网-Scratch_Python_教程_免费儿童编程学习平台 1.1 简介OWa少儿编程网-Scratch_Python_教程_免费儿童编程学习平台 1.2 诞生 ...
- 【Python】这10个Python性能调优的小技巧,你知道几个?
这篇文章关于Python性能调优的10个小技巧,每天花5-10分钟阅读我的文章,对你技术提升一定会有帮助. 1 多多使用列表生成式 替换下面代码: cube_numbers = []for n in ...
最新文章
- 【教程】简易CDQ分治教程学习笔记
- FreeRTOS(四)——内存管理
- B站疯传,一整套Java学习资料,白拿不谢,叫我雷锋!
- Codeforces Round #443 (Div. 2) B. Table Tennis
- Starry Night [USACO]
- 常用器件选型——电源篇
- Java常见面试题及答案汇总
- python函数-装饰器
- 兄弟mfc9140cdn无法识别_我共享了Brother打印设备。现在只能打印但无法扫描,该如何解决?
.| Brother...
- 9.2 配置rsync+inotify实时同步
- Tecplot RS 2020 R1安装教程及新功能
- npm install报错error 404 Not Found - GET httpsregistry.npm.taobao.org@xt
- Bug解决-RuntimeError: Sizes of tensors must match except in dimension 2. Got 320 and 160 (The offendin
- 小白学java_day1
- Navicat premium 导入大数据的Excel文件失败的方法
- 【Android UI设计与开发】5.底部菜单栏(二)使用Fragment实现底部菜单栏
- Abp 构造注入服务接口后运行报错 Host terminated unexpectedly!
- sql 纵向求和_SQL里边的求和语句怎么写
- Xilinx平台Aurora IP介绍(汇总篇)
- 支持web信息分类的高性能蜘蛛程序 爬虫程序 spider