【Python面试题】-设计模式

1.单例

1.1 请手写一个单例

1.class A(object):

2.instance = None

3.def        new   (cls, *args, **kwargs):

4.if   cls.   instance is None:

5.cls.   instance = object.   new   (cls)

6.return cls.   instance

7.else:

8.return cls.   instance

1.2 单例模式的应用场景有哪些?

单例模式应用的场景一般发现在以下条件下:

(1)资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如日志文件,应用配置。

(2)控制资源的情况下,方便资源之间的互相通信。如线程池等。 1.网站的计数器 2.应用配置 3.多线程池 4. 数据库配置,数据库连接池 5.应用程序的日志应用....

2. 工厂

3. 装饰器

3.1 对装饰器的理解 ,并写出一个计时器记录方法执行性能的装饰器?

装饰器本质上是一个 Python 函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外 功能,装饰器的返回值也是一个函数对象。

1.import time

2.def timeit(func):

3.def wrapper():

4.start = time.clock()

5.func() end =time.clock()

6.print 'used:', end - start

7.return wrapper

8.@timeit

9.def foo():

10.print 'in foo()'foo()

3.2 解释一下什么是闭包?

在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为 闭包。

3.3 函数装饰器有什么作用?

装饰器本质上是一个 Python 函数,它可以在让其他函数在不需要做任何代码的变动的前提下增加额外的功能。装 饰器的返回值也是一个函数的对象,它经常用于有切面需求的场景。 比如:插入日志、性能测试、事务处理、缓存、 权限的校验等场景        有了装饰器就可以抽离出大量的与函数功能本身无关的雷同代码并发并继续使用。

4. 生成器

4.1 生成器、迭代器的区别?

迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和 iter 方法返回自己本身,对于 string、list、 dict、tuple 等这类容器对象,使用 for 循环遍历是很方便的。在后台 for 语句对容器对象调用 iter()函数,iter()

是 python 的内置函数。iter()会返回一个定义了 next()方法的迭代器对象,它在容器中逐个访问容器内元素,next() 也是 python 的内置函数。在没有后续元素时,next()会抛出一个 StopIteration 异常。

生成器(Generator)是创建迭代器的简单而强大的工具。它们写起来就像是正规的函数,只是在需要返回数 据的时候使用 yield 语句。每次 next()被调用时,生成器会返回它脱离的位置(它记忆语句最后一次执行的位置 和所有的数据值)

区别:生成器能做到迭代器能做的所有事,而且因为自动创建了 iter()和 next()方法,生成器显得特别简洁,而且 生成器也是高效的,使用生成器表达式取代列表解析可以同时节省内存。除了创建和保存程序状态的自动方法,当 发生器终结时,还会自动抛出 StopIteration 异常。

4.2 X 是什么类型?

1.   X = (for   i   in   ramg(10))

答:X 是 generator 类型。

4.3 请尝试用“一行代码”实现将 1-N 的整数列表以 3 为单位分组,比如 1-100 分组后为? (2018-4-20-lxy)

1. print([[x for x in range(1,100)][i:i+3] for i in range(0,len(list_a),3)])

4.4Python 中 yield 的用法?

yield 就是保存当前程序执行状态。你用 for 循环的时候,每次取一个元素的时候就会计算一次。用 yield 的函数 叫 generator,和 iterator 一样,它的好处是不用一次计算所有元素,而是用一次算一次,可以节省很多空间。generator 每次计算需要上一次计算结果,所以用   yield,否则一   return,上次计算结果就没了。

1.>>> def createGenerator():

2.... mylist = range(3)

3.... for i in mylist:

4.... yield i*i

5. ...

6.>>> mygenerator = createGenerator() # create a generator

7.>>> print(mygenerator) # mygenerator is an object!

8.<generator object createGenerator at 0xb7555c34>

9.>>> for i in mygenerator:

10.    ... print(i)

11.    0

12.    1

13.    4


  • 文末福利推荐

为了帮助大家更好的学习Python课程,这里跟大家分享编程资源福利了!我们整理了Python新手入门学习路线,同时附基本视频学习资源合集,相信这套福利可以帮你顺利入行Python工作!

点击链接,留下您的联系方式,即可快速咨询,领取免费资料:https://t.csdnimg.cn/9laf

【Python面试题】-设计模式相关推荐

  1. python面试题_春招苦短,我用百道Python面试题备战

    对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔.那么你了解过Python编程面试题吗?从Python基础到网页爬虫你是否能全方位Hold住?今天,机器之心为读者们 ...

  2. 重磅!这个 GitHub 汇总了 300 道 Python 面试题!

    本文来自机器之心,作者kenwoodjw 对于机器学习算法工程师而言,是不可或缺的语言,它的优美与简洁令人无法自拔.那么你了解过Python编程面试题吗?从Python基础到网页爬虫你是否能全方位Ho ...

  3. 阿里巴巴整理的python_阿里P8大佬整理的2020年最全99道python面试题,文末附答案...

    前言: 学习python的优点是什么?python语法非常优雅,简单易学 免费开源 跨平台,可以自由移植 可扩展,可嵌入性强 第三方库丰富 python的应用领域在系统编程中应用广泛,比如说shell ...

  4. python面试题37道(附答案)看完面试不愁了

    1. (1)python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只能有一个线程使用解释器, ...

  5. Python面试题_中级版

    Python 面试题 1.Python是如何进行内存管理的 对象引用机制.垃圾回收机制.内存池机制 1.1对象引用机制 Python内部使用引用计数,来保持追踪内存中的对象,所有对象都有引用计数. 引 ...

  6. 华为python面试题库_我收集了100道Python面试题,开源到了Github

    对于机器学习算法工程师而言,Python是不可或缺的语言,它的优美与简洁令人无法自拔.那么你了解过Python编程面试题吗?从Python基础到网页爬虫你是否能全方位Hold住?今天,机器之心为读者们 ...

  7. 老男孩上海校区Python面试题

    python面试题 第一章:python基础 数据类型: 1 字典: 1.1 现有字典 dict={'a':24,'g':52,'i':12,'k':33}请按字典中的 value 值进行排序? 1. ...

  8. 点开瞅瞅,再来几道Python面试题吧,Python面试题No20

    文章目录 本面试题题库,由公号:非本科程序员 整理发布 第1题:如何理解 Django 被称为 MTV 模式? 第2题:解释下什么是 ORM 以及它的优缺点是什么? 第3题:Django 系统中如何配 ...

  9. python查询和替换一个文本字符串_【Python】python面试题

    一些Python面试题 1. (1)python下多线程的限制以及多进程中传递参数的方式 python多线程有个全局解释器锁(global interpreter lock),这个锁的意思是任一时间只 ...

最新文章

  1. 用C语言实现 静态通讯录+动态通讯录+文件实现“退出保存信息版本”(附上思路+项目展示+源代码)
  2. 北邮计算机发展,北邮计算机学科前景怎样?升学就业如何?26日教授亲自来解读...
  3. python callback函数_回调函数callbacks
  4. Sequence Pair Weight
  5. 渝粤教育 陕西师范大学 《金融中介学Ⅰ》作业
  6. 了解DJango模板系统
  7. c语言程序游戏例子,C语言游戏编写例子.doc
  8. 2016年4月计算机网络原理,2015年4月04741计算机网络原理试题及答案
  9. NGUI的输入框制作(attach- input filed script的使用)
  10. idea 新建java类 乱码,Intellij IDEA 2019 最新乱码问题及解决必杀技(必看篇)
  11. 本地 Git 文件夹显示绿色标识
  12. 介绍requests+threading多线程爬虫,提取采用xpath 和正则两种,介绍线程锁
  13. 【前端】跨域 问题 原理 + 解决方案 下
  14. Java基础关于接口的案例及多态的引用类型转换练习题
  15. Tik Tok跨境:不会英语可以做TikTok吗?
  16. 从父组件中获取子组件的值
  17. 【书籍】——机器学习与深度学习
  18. 这三种屏幕OLED、AMOLED、LCD的优缺点有哪些呢?
  19. 辐照度贴图的生成算法分析
  20. 【乐逍遥网站设计】网站建设费用都有哪些组成?

热门文章

  1. ggplot2-设置图例(legend)
  2. 一本不错的汇编书籍《Professional Assembly Language》
  3. Opengl ES系列学习--颜色
  4. 2020短视频及社群运营全攻略
  5. Mac电脑几款常用且免费的软件介绍
  6. 【CVPR2021】Decoupled dynamic filter networks
  7. OpenGL 蓝宝书第七版 windows+vs 所需的环境的配置
  8. cf Educational Codeforces Round 44 C. Liebig's Barrels
  9. 【产品】产品迭代各部门工作全流程(5年工作经验都在这了=.=)
  10. 一文搞定在Ubuntu安装tldr