来源:python学习专栏

第一题,对象的类属性指向类对象class A():

def show(self):

print( A_show )

class B():

def show(self):

print( B_show )

obj =B()

obj.show()

#这样我们能够正常调用

#那么我们能不能

#obj.show()

#我们想调用A中的show

我们看一下obj.__class__ =A

obj.show()

这样就可以直接调用了

第二题、方法对象__call__class People():

def __init__(self,length):

self.__length = length

def hand(self):

print( 手有 {} 米 .format(self.__length))

a=People(1)

a.hand() #这样我们是能够完美运行的

那么我们不小心 a(10) 这样了,我希望他能够正常运行

这里我们需要用到一个对象方法__call__class People():

def __init__(self,length):

self.__length = length

def hand(self):

print( 手有 {} 米 .format(self.__length))

def __call__(self, *args):

return self.hand()

a=People(1)

a() #这时a() 会找到__call__ 然后运行返回的函数

第三题,__new__ 和 __init__

1.init 通常用于初始化一个新实例,控制这个初始化的过程,比如添加一些属性, 做一些额外的操作,发生在类实例被创建完以后。它是实例级别的方法。

2 ,new 通常用于控制生成一个新实例的过程。它是类级别的方法。

__new__ 在__init__ 之前运行

3 new至少要有一个参数cls,代表要实例化的类,此参数在实例化时由Python解释器自动提供

4 new必须要有返回值,返回实例化出来的实例,这点在自己实现new时要特别注意,可以return父类new出来的实例,或者直接是object的new出来的实例

class A():

def func(self):

print( A_func )

def __init__(self):

print( A_init )

class B():

def func(self):

print( B_func )

def __new__(cls, a):

print( new ,a)

if a>10:

return super(B,cls).__new__(cls)

return A()

def __init__(self,a):

print( B_init )

#想想输出结果

a = A()

b = B(5)

b.func()

b = B(11)

b.func()

第四题 ,列表解析式

生成列表list1 = [1,2,3,4]

#取出list1中大于二的值

list2 =[i for i in list1 if i>2]

print(list2)

生成字典dict1 = {i: i*2 for i in list1 if i*2 >4 }

print(dict1)dict2 = {i: items +str(i*2) for i in list1 if i*2 >4 }

print(dict2)

第五题,变量域num = 666

def f1():

num = 888

print(num)

def f2():

print(num)

print(num)

f1()

print(num)

f2()

# 666

#888

#666

#666

需要在函数中改变变量

我们需要使用global

这只是局部变量和全局变量的变量域

我们继续看一下函数嵌套的变量域def fun():

num = 0

def fun1():

num = 1

def fun2():

print(num)

fun2()

fun1()

fun()

#1

在函数嵌套中变量会逐级网上找变量

这样不会存在找不到变量的问题

在fun2()找不到会到fun1()中找

第六题,默认方法,python反射机制,getattrclass A:

def __init__(self,a,b):

self.a = a

self.b = b

def func(self):

print( a+b={} .format(self.a+self.b))

a1 = A(1,2)

a1.func()

#al.fun() 这样呢,就该报错了

好吧,我不想让它报错class A:

def __init__(self,a,b):

self.a = a

self.b = b

def func(self):

print( a+b={} .format(self.a+self.b))

def __getattr__(self,args):

return self.func #切记这里不能加() 因为 func()()是不能执行的

a1 = A(1,2)

a1.fun()

#3

__getattr__,hasattr

这是python的反射机制,getattr会接收参数,

然后执行,对应的还有hasattr,大家可以自己深究

第七题,包管理

当 一个包pack里有三个模块,model, model2, model3,

采用from pack import *

怎样只导入 model model2

添加 __init__.py文件,在文件中加入__all__ = [ model , model2 ]

就能实现了

第八题, 函数闭包

#要求,写一个函数,接受一个整数参数N,返回一个函数,函数功能是把,函数的参数和N相乘的结果返回def f1(N):

def f2(val):

return N*val

return f2

这题解释量比较大,大家可以到我的另外一篇文章学习

点击链接就可以跳转

第十题,装饰器

装饰器本质就是函数 功能是为其它的函数添加功能

原则是

1,不改变修饰函数的源代码

2, 不修改修饰函数的调用方式

装饰器=高阶函数+函数嵌套+闭包

我想在不改变一个函数源码状态下,测试运行时间import time

def timer(func):

def wapper(a,*args, **kwargs):

if a ==1:

start = time.time()

res = func(*args, **kwargs)

end = time.time()

print( 函数运行时间 ,end-start)

return res

else:

return 1

return wapper

#我们测试下面这个函数的时间

#只需要把上面的函数加一个@写在函数上

#就可以实现了

a=1

@timer

def cal(a,l):

res = 0

for i in l:

time.sleep(0.01)

res+=i

return res

res = cal(range(20))

print(res)

运行一下,你就知道装饰器的强大之处了

知道这些面试题,并不代表你面试就能够顺利通过

我们还是需要在平时多记录知识

祝大家早日找到适合自己的工作

今天的十道题就到这里了

python测开面试题_python十道经典面试题,测试你的python功底!相关推荐

  1. 宇宙条一面:十道经典面试题解析

    前言 有位朋友面试了宇宙条,后端方向.整理了这几道面试真题以及答案,如有错误,欢迎大家留言区讨论哈.金九银十冲刺,面试的小伙伴加油呀. 1.http请求头里,expire和cache-control字 ...

  2. 今日头条一面:十道经典面试题解析芬芬细雨

    有位朋友面试了宇宙条后端方向.整理了这几道面试真题以及答案,如有错误,欢迎大家指出哈.金九银十冲刺,面试的小伙伴加油呀. 1.http请求头里,expire和cache-control字段含义,说说H ...

  3. 阿里巴巴一面 :十道经典面试题解析

    1. 用到分布式事务嘛?为什么用这种方案,有其他方案嘛? 什么是分布式事务 谈到事务,我们就会想到数据库事务,很容易就想到原子性.一致性.持久性.隔离性. 分布式事务跟数据库事务有点不一样,它是指事务 ...

  4. 今日头条一面:十道经典面试题解析

    1.http请求头里,expire和cache-control字段含义,说说HTTP状态码 1.1 expire和cache-control字段含义 Cache-Control是HTTP/1.1的头字 ...

  5. 关于ElasticSearch的十道经典面试题

    文章目录 1.Elasticsearch 中的倒排索引是什么? 2.Elasticsearch 中的集群.节点.索引.文档.类型是什么? 3.什么是近实时搜索? 4.如何理解 Elasticsearc ...

  6. [ZZ]知名互联网公司Python的16道经典面试题及答案

    知名互联网公司Python的16道经典面试题及答案 https://mp.weixin.qq.com/s/To0kYQk6ivYL1Lr8aGlEUw 知名互联网公司Python的16道经典面试题及答 ...

  7. linux c语言常见面试题及答案,Linux下C语言的几道经典面试题小结(分享)

    Linux下C语言的几道经典面试题小结(分享) 本篇文章整理了几道Linux下C语言的经典面试题,相信对大家更好的理解Linux下的C语言会有很大的帮助,欢迎大家探讨指正. 1.如果在Linux下使用 ...

  8. 厉害了,关于String的10道经典面试题

    转载自 厉害了,关于String的10道经典面试题 1.String是基本数据类型吗? 2.String是可变的话? 3.怎么比较两个字符串的值一样,怎么比较两个字符串是否同一对象? 4.switch ...

  9. 后端开发10道经典面试题的剖析, 技术方向如何决定职业方向

    10道经典面试题的剖析, 技术方向如何决定职业方向 1. time_wait, close_wait如何解决? 2. 服务器接入抖动如何解决? 3. malloc的实现原理 视频讲解如下,点击观看: ...

最新文章

  1. Post with HttpClient
  2. 调焦后焦实现不同距离成像_90%的人都忽视的“最近对焦距离”,其实有大用处...
  3. mysql 字符串类型
  4. 读《活着》----余华
  5. eclipse下载与安装步骤详解,包含解决错误(最全最详细,多图)
  6. Python学习入门7:python学习从基础到高手,再到就业
  7. mano安全_安全接入——后台
  8. 重庆大学计算机学院国防生,在重大有个国防生男朋友是种什么样的体验?
  9. this is a test
  10. Thunder团队第二周 - Scrum会议3
  11. thinkphp 6.x 5.x nginx php fpm 配置
  12. 每一个写博客的程序猿,都应该被温柔对待
  13. websocket实时聊天(一)
  14. 华为OJ 初级:等差数列
  15. 高以翔死因曝光!猝死前最后4分钟,他本还有一次活的机会...
  16. Windows获取模块基地址
  17. 基于 Python 的高考志愿高校及专业分析系统
  18. 小明左、右手中分别拿两张纸牌(比如:黑桃10和红桃8,数字10和8可通过键盘录入),要求编写代码交换小明手中的牌
  19. 【渝粤题库】广东开放大学 管理学基础 形成性考核
  20. 易拉罐真的能增强WiFi信号!笔记本手机都适用

热门文章

  1. linux的基础知识——TCP通信状态
  2. rosserial_java_[学习笔记]Rosserial实现Windows-ROS交互操作(1)
  3. 值对于 int32 太大或太小_怎样将视频文件变小却对画质没有太大影响呢?
  4. Java多线程编程递增_java多线程编程之简介
  5. 4怎么修边_亦木良品阻燃板怎么样
  6. 多个if用什么设计模式_抽丝剥茧——单例设计模式
  7. 电脑fps低怎么办_电脑想要英雄联盟玩的流畅,主要看哪几个方面?
  8. 云服务器cvm只能弄网站么,云服务器cvm与建站主机区别
  9. c++如何让字符串重复输出_python编程入门八:列表、元组、字符串的转换及补充方法...
  10. Windows Terminal完整指南