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__ = A
obj.show()
__class__
方法指向了类对象,只用给他赋值类型A,然后调用方法show,但是用完了记得修改回来。
2.方法对象
问题:为了让下面这段代码运行,需要增加哪些代码?
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
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", aif a>10:return super(A, cls).__new__(cls)return B()def __init__(self,a):print "INIT", aa1 = 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 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'])
5.全局和局部变量
下面这段代码输出什么?
num = 9def f1():num = 20def f2():print numf2()
f1()
f2()
答案:
9
9
num不是个全局变量,所以每个函数都得到了自己的num拷贝,如果你想修改num,则必须用global关键字声明。比如下面这样
num = 9def f1():global numnum = 20def f2():print numf2()
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 = aself.b1 = bprint 'init'def mydefault(self):print 'default'a1 = A(10,20)
a1.fn1()
a1.fn2()
a1.fn3()
方法 fn1/fn2/fn3 都没有定义,添加代码,是没有定义的方法都调用mydefault函数,上面的代码应该输出
default
default
default
答案:
class A(object):def __init__(self,a,b):self.a1 = aself.b1 = bprint 'init'def mydefault(self):print 'default'def __getattr__(self,name):return self.mydefaulta1 = A(10,20)
a1.fn1()
a1.fn2()
a1.fn3()
方法__getattr__
只有当没有定义的方法调用时,才是调用他。当fn1方法传入参数时,我们可以给mydefault方法增加一个*args
不定参数来兼容。
class A(object):def __init__(self,a,b):self.a1 = aself.b1 = bprint 'init'def mydefault(self,*args):print 'default:' + str(args[0])def __getattr__(self,name):print "other fn:",namereturn self.mydefaulta1 = 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):return num * valreturn gnzw = mulby(7)
print(zw(9));
10.性能
解析下面的代码慢在哪
def strtest1(num):str='first'for i in range(num):str+="X"return str
答案:python的str是个不可变对象,每次迭代,都会生成新的str对象来存储新的字符串,num越大,创建的str对象越多,内存消耗越大。
10道Python面试常见的问题相关推荐
- 110 道 Python 面试笔试题超强汇总
本 Chat 为免费基础入门篇,获取更多面试知识点请大家参阅我的另一个 Chat :致金三银四辛勤找工作的你们:Python 面试必备. 本 Chat 你将会获得以下知识: 110 道 Python ...
- 10道python面试题,每题10分,你能的多少分!(内附python教程)
image.png 1.一行代码实现1–100之和 10道python面试题,每题10分,你能的多少分! 2.简述面向对象中new和init区别 init是初始化方法,创建对象后,就立刻被默认调用了, ...
- 挑战Man Group!顶级对冲基金的10道Python面试题
量化投资与机器学习编辑部 如果你正在面试一家对冲基金公司,你可能需要看看我们今天为大家提供的题目. Man Group量化团队近期出了10道Python编程题,来考考大家的基本功究竟怎么样. 请不要借 ...
- python程序员职业考试_最新10大Python面试常问的问题,60%的人都不会
Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试官经常问的问题,供大家参考学习. 类继承 有如下的一段代 ...
- python面试常见问题-10个Python面试常问的问题
概述 Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试官经常问的问题,供大家参考学习. 1.类继承 有如 ...
- python面试-10个Python面试常问的问题(小结)
概述 Python是个非常受欢迎的编程语言,随着近些年机器学习.云计算等技术的发展,Python的职位需求越来越高.下面我收集了10个Python面试官经常问的问题,供大家参考学习. 类继承 有如下的 ...
- 10个Python面试常问的问题
概述 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这三类人,我给大 ...
- 10 道大厂面试必考的计算机网络问题-陶辉 极客时间
大厂中更多会考察你的长板. 在大厂中要学会求助 1.TCP的三次握手机制,为什么要三次? 为什么需要握手? 需要同步序列号,当然也有MSS(最大报文段长度),滑动窗口. 为什么是3次? 正常想法应该是 ...
- 110道python面试笔试题汇总,你能答对几道?
该文110道面试题全部来自于大家笔试面试时候拍照后发到群里求助的题目,并自己一道一道亲自做了,大部分题目属于巩固基本python知识点的题目,希望对基本知识不熟悉的同学,能认真做一遍,肯定会有不少收获 ...
最新文章
- LFFD ncnn torch
- javascript的常见对象总结
- linux libfcmain.so,BabyLinux制作过程详解
- 进程及 fork() 系统调用详解
- 一维信号双边滤波器_定义图上的各向异性、动态、频谱和多尺度滤波器
- python偶数列表_使用条件偶数列表创建带有地图的元组 - python
- 【英语学习】【Daily English】U05 Places L04 Can I have some painkillers?
- 察颜观色保无忧—存储卡选购之四法则
- python无效语法怎么解决_在Python的Django框架中调用方法和处理无效变量
- [Swift]LeetCode289. 生命游戏 | Game of Life
- python time datetime模块最详尽讲解
- C语言strcmp函数
- 使用nslookup查看邮箱信息
- java 图形检测_使用OpenCV[Java]检测简单几何图形
- 动态内存分配(详解)
- Tensorflow中的各种梯度处理gradient
- ​浙江省交通运输物流信息服务中心平台容灾设备采购二期项目
- h.265不是视频压缩技术未来的5个原因
- 【云原生】K8s简介之什么是K8s
- 全网最全最细的CSDN【top1】接口测试工具Fiddler抓包工具总结
热门文章
- jQuery日期弹出选择框Datepicker效果
- 查看linux服务器硬件信息
- iOS开发 简述使用OCUnit对程序进行单元测试(UnitTest)
- java 获取当月第一天和最后一天 获取前一个月第一天和最后一天
- 轻松自动化---selenium-webdriver(python) (七)
- 为Liferay Server分配Perm,Heap Size
- erwin模型怎么保存_一行命令启动,十分钟内完成部署,Paddle Serving开放模型即服务功能...
- 【温故知新】CSS学习笔记(字体样式属性)
- ABAP COLLECT语句用法深入解析
- BAPI_BILLINGDOC_CANCEL1解析