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面试常见的问题相关推荐

  1. 110 道 Python 面试笔试题超强汇总

    本 Chat 为免费基础入门篇,获取更多面试知识点请大家参阅我的另一个 Chat :致金三银四辛勤找工作的你们:Python 面试必备. 本 Chat 你将会获得以下知识: 110 道 Python ...

  2. 10道python面试题,每题10分,你能的多少分!(内附python教程)

    image.png 1.一行代码实现1–100之和 10道python面试题,每题10分,你能的多少分! 2.简述面向对象中new和init区别 init是初始化方法,创建对象后,就立刻被默认调用了, ...

  3. 挑战Man Group!顶级对冲基金的10道Python面试题

    量化投资与机器学习编辑部 如果你正在面试一家对冲基金公司,你可能需要看看我们今天为大家提供的题目. Man Group量化团队近期出了10道Python编程题,来考考大家的基本功究竟怎么样. 请不要借 ...

  4. python程序员职业考试_最新10大Python面试常问的问题,60%的人都不会

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

  5. python面试常见问题-10个Python面试常问的问题

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

  6. python面试-10个Python面试常问的问题(小结)

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

  7. 10个Python面试常问的问题

    概述 很多人学习python,不知道从何学起. 很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手. 很多已经做案例的人,却不知道如何去学习更加高深的知识. 那么针对这三类人,我给大 ...

  8. 10 道大厂面试必考的计算机网络问题-陶辉 极客时间

    大厂中更多会考察你的长板. 在大厂中要学会求助 1.TCP的三次握手机制,为什么要三次? 为什么需要握手? 需要同步序列号,当然也有MSS(最大报文段长度),滑动窗口. 为什么是3次? 正常想法应该是 ...

  9. 110道python面试笔试题汇总,你能答对几道?

    该文110道面试题全部来自于大家笔试面试时候拍照后发到群里求助的题目,并自己一道一道亲自做了,大部分题目属于巩固基本python知识点的题目,希望对基本知识不熟悉的同学,能认真做一遍,肯定会有不少收获 ...

最新文章

  1. LFFD ncnn torch
  2. javascript的常见对象总结
  3. linux libfcmain.so,BabyLinux制作过程详解
  4. 进程及 fork() 系统调用详解
  5. 一维信号双边滤波器_定义图上的各向异性、动态、频谱和多尺度滤波器
  6. python偶数列表_使用条件偶数列表创建带有地图的元组 - python
  7. 【英语学习】【Daily English】U05 Places L04 Can I have some painkillers?
  8. 察颜观色保无忧—存储卡选购之四法则
  9. python无效语法怎么解决_在Python的Django框架中调用方法和处理无效变量
  10. [Swift]LeetCode289. 生命游戏 | Game of Life
  11. python time datetime模块最详尽讲解
  12. C语言strcmp函数
  13. 使用nslookup查看邮箱信息
  14. java 图形检测_使用OpenCV[Java]检测简单几何图形
  15. 动态内存分配(详解)
  16. Tensorflow中的各种梯度处理gradient
  17. ​浙江省交通运输物流信息服务中心平台容灾设备采购二期项目
  18. h.265不是视频压缩技术未来的5个原因
  19. 【云原生】K8s简介之什么是K8s
  20. 全网最全最细的CSDN【top1】接口测试工具Fiddler抓包工具总结

热门文章

  1. jQuery日期弹出选择框Datepicker效果
  2. 查看linux服务器硬件信息
  3. iOS开发 简述使用OCUnit对程序进行单元测试(UnitTest)
  4. java 获取当月第一天和最后一天 获取前一个月第一天和最后一天
  5. 轻松自动化---selenium-webdriver(python) (七)
  6. 为Liferay Server分配Perm,Heap Size
  7. erwin模型怎么保存_一行命令启动,十分钟内完成部署,Paddle Serving开放模型即服务功能...
  8. 【温故知新】CSS学习笔记(字体样式属性)
  9. ABAP COLLECT语句用法深入解析
  10. BAPI_BILLINGDOC_CANCEL1解析