对于python高级中的面试准备2:
(1)迭代器
迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
—可迭代对象:直接作用于for循环的数据类型:
一类是集合数据类型,如list、tuple、dict、set、str等;
一类是 generator,包括生成器和带yield的generator function。
这些可以直接作用于for循环的对象统称为可迭代对象

(2)判断是否可以迭代
可以使用isinstance()判断一个对象是否是Iterable对象,生成器也是一种迭代器:可迭代对象(iterable)和迭代器(Iterator)。生成器都是Iterator对象,但是list、dict、str都是可迭代,但是不是迭代器,可以使用iter()函数把可迭代对象变成迭代器
对于迭代器和可迭代对象的总结:
凡是可做用于for循环的对象都是Iterable类型(可迭代对象)
凡是可做用于next()函数的对象都是Iterator类型(迭代器对象)
集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个 Iterator对象。

(3)闭包(编程语言中的一种重要的语法)需要理解python中的引用----就是指针、地址的概念。
什么是闭包:
闭包就是函数中定义函数,里面的函数会使用外面函数的变量或者外面函数传进来的参数等。内部函数就称为函数闭包。
闭包的总结:
----1.闭包优化了变量,原来需要类对象完成的工作,闭包也可以完成
----2.由于闭包引用了外部函数的局部变量,则外部函数的局部变量没有及时释放,消耗内存

(4)装饰器
装饰器是程序开发中经常会用到的一个工作,用好了装饰器开发效率如虎添翼

def w1(func):
	def test():
		......
		func()
	return test
@w1
def  desc():
	pass

@函数名是python的一种语法糖
这段代码的执行是这样的:
第一步:desc() 执行desc函数的时候,相当于desc=w1(desc),此时的desc指向的是test,也就是执行test函数了,中间做了一个函数执行转移。
第二步:执行test,test函数中会执行desc函数的,这个就是函数装饰器的使用方法

装饰器的一些功能:
引入日志
函数执行时间统计
执行函数前预备处理----相当于在函数之前添加一些验证的操作或者其他的操作()
执行函数后清理功能
权限校验等场景
缓存

(5)装饰器的类型
无参数的函数装饰器(被装饰的函数没有参数)
有参数的函数装饰器(被装饰的函数有参数)
以上是针对于函数来说的,还有类装饰器的

(6)python中的os和sys
os 模块:这个模块表示的是python解释器和操作系统交互的模块
sys模块:这个模块表示的是python解释器的搜索路径–模块调用的搜索路径,sys.path就是python解释器的搜索路径,sys.path.append(),sys.path.insert()-----都可以在python解释器中插入搜索路径

(7)python中的作用域
命名空间—也就是作用域:globals、locals。LEGB规则
python使用LEGB的顺序来查找一个符号对应的对象
locals -> enclosing function -> globals -> builtins

(8)== 和 is
总结:
is:是比较两个引用是否指向了同一个对象(引用比较,也就是比较地址是否一样)
==:是比较两个对象是否相等,也就是对象里面的值

(9)深拷贝、浅拷贝
浅拷贝:对于一个对象的顶层拷贝,通俗的理解就是拷贝了引用,并没有拷贝内容,两种的引用是一样的—地址:引用中的内容改变,这两者都会发生改变,由于两者都是指向同一片内存的

深拷贝:深拷贝是对于一个对象所有层次的拷贝(递归),也就是新开辟一段内存,和之前的东西是没有关系。其中任意一个发生改变时,都不会影响到另外一方,新旧之分

浅拷贝对不可变类型和可变类型的copy不同—具体使用的时候在看

(10)进制、位运算
进制的理解和表示,以及进制的转换等操作
位运算:
&按位与
|按位或
^按位异或
~按位异或
<<按位左移

按位右移

用途:直接操作二进制,省内存,效率高
移位运算的操作:左移运算(左移1位)相当于乘以2(把原数据乘以2)

(11)私有化
xx: 公有变量
_x:单前置下划线,私有化属性或方法(私有化处理)
_x的变量、函数、类在使用from xxx import *时都不会被导入

(12)property装饰器的作用
还记得装饰器(decorator)可以给函数动态加上功能吗?对于类的方法,装饰器一样起作用。Python内置的@property装饰器就是负责把一个方法变成属性调用的,简单理解就是把装饰的函数当成属性来调用