1.Python中可变和不可变对象是什么意思
不可变类型有数字,字符串,元组和不可变集合。
可变类型有列表,字典和可变集合。
不可变类型:不可直接修改变量的值,修改时会开辟一个新的内存空间和内存地址,原变量指向新的内存地址。
可变类型:可直接修改变量的值,修改时不会开辟新的内存空间和地址,而是直接引用原变量的内存地址。
2.tuple、list ,set和 dict 的区别
tuple,不可变集合不可变
list,可变集合 和 dict 可变
list是最自由的,可以使用索引、切片,可以进行计算和修改;
tuple是不自由的,数据不能更改,但是和list一样具有序列,可以用索引和切片;
dict是半自由的,自由体现在键值对的无序,可以通过key去索引value的值,不自由体现在数据操作只能通过key来实现,key是不可变;
set是半自由的,自由体现在它通过list传值给它,数据类型是可变的,还可以改变list中的值,数据集是无序的,不重复的,可以进行计算,不自由体现在无法使用索引和切片准确定位。
3.Python 的浅拷贝和深拷贝
浅拷贝开辟新的内存空间,但拷贝对象中的可变元素和原对象中的可变元素指向同一内存地址,对原对象或拷贝对象进行修改,两个对象会同时改变。即藕断丝连的关系。
深拷贝开辟新的内存空间,同时拷贝对象中的可变元素和原对象中的可变元素指向不同一内存地址。即两者离婚,再无关系。
4.Python 采用的是什么数据结构
使用的是key-value匹配的哈希结构
5.Python 的 append 和 extend 有什么区别?
extend接受一个参数,这个参数总是一个List,并且把这个List当中的元素依次添加到原List当中;
append接受一个参数,这个参数可以是任何的数据类型,并且简单的追加到原List的尾部。
6.iterables、generator 和 yield的区别
生成器是一种迭代器,相反不成立。
**iterables(迭代器)**保存在内存当中,可随便访问,使用[]。
**generator (生成器)**不保存在内存当中,而是惰性加载,用到它的时候才会临时计算(数据集大时很节约内存),只能进行一次迭代(生成器中的内容只能访问一次),在没有值可以返回的时候,生成器自动产生StopIteration异常,使用()。
yield相当于return,yield专属于generator,当某个函数使用yield时,该函数将返回一个生成器。
7.Python 的迭代器
可以被next() 函数调用并不断返回下一个值的对象称为迭代器
1.迭代是Python最强大的功能之一,是访问集合元素的一种方式。
2.迭代器是一个可以记住遍历位置的对象。
3.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
4.迭代器有两个基本的方法:iter() 和 next()。
5.字符串,列表或元组对象都可用于创建迭代器。
6.迭代器对象可以使用常规for语句进行遍历。
7.把一个类作为一个迭代器使用需要在类中实现两个方法 iter() 与 next() 。
8.Python 的生成器
在python中,一边循环一边计算的机制,称为生成器:generator.
1.在 Python 中,使用了 yield 的函数被称为生成器(generator)。
2.跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
3.在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
9.Python 的闭包
内部函数对外部函数作用域里变量的引用(非全局变量),则称内部函数为闭包。
闭包三要素:
1、嵌套函数
2、变量的引用
3、返回内部函数
#定义一个嵌套函数(要素1)
def test(num):
def test_in(num_in):
#内部函数引用外部函数的变量(非全局变量)(要素2)
print("sum = %s"%(num + num_in))
#返回的结果可以被打印出来
return num,num_in
#返回内部的函数(要素3)
return test_in
#这里的rtn就是test_in
rtn = test(10)
print(rtn)
#内部函数test_in传参
print(rtn(20))
10.Python 的装饰器
装饰器其实就是一个闭包,把一个函数当作参数然后返回一个替代版函数。
装饰器的作用:装饰原有的函数。
装饰器有2个特性:
1、可以把被装饰的函数替换成其他函数
2、可以在加载模块时候立即执行
装饰器的功能有:
1、引入日志
2、函数执行时间统计
3、执行函数前预备处理
4、执行函数后清理功能
5、权限校验等场景
6、缓存