1. 简要介绍一下Python生成器是什么?
生成器是一种迭代器,是一边循环一边计算的机制(Generator)。生成器就是一个机器,没启动它,它就是一个符号,占用很少的内存空间,有点像汽车,启动它,才能走,但生成器只能向前走,不能后退,你可以停一下,再次启动它,又可以接着走。
也是一个算法/函数,每次条用next的时候计算下一个值,最后跑出StopIteration。
生成器有两种创建方法:
- 例如创建列表的时候,为了节省空间不必创建完整的list,把列表解析中的大括号“[ ]”改为小括号“( )”,列表解析就变为生成器。
- 函数中包含yield,则叫generator。next调用,遇到yield返回。
2. Python中 is 和 == 的区别?
is 和 == 都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。
- ==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,
- is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。
3. 说明一下Python的方法解析顺序?
Python的方法解析优先级从高到低为: 1. 实例本身(instance) 2. 类(class) 3. super class, 继承关系越近, 越先定义, 优先级越高.
4. 手写二分查找
5. Ctrl+C程序挂掉还是抛出异常,如何判断两个字典是否一样。。。。
会出现异常,cmp()函数返回0,说明两个字典相同,返回其他,说明字典不一样