1.简答
说下对python深浅拷贝的理解。并有代码简单实现
①只有一层深浅拷贝没区别:
都是
1、如果是可变,地址不同
2、如果是不可变,地址相同

②深拷贝:
copy.deepcopy
1、如果所有层都是不可变的,所有层地址相同
2、如果有一个可变的,外层一定不同
3、如果内层中这一层是可变的,地址不同。否则,地址相同








③浅拷贝:
copy.copy
内层地址一样
外层地址:
1、如果是可变,地址不同
2、如果是不可变,地址相同
④二者地址一样,指向同一个






2.简答
说下对生成器的理解,有几种创建方式,并用代码简单实现。
在Python中,这种一边循环一边计算的机制,称为生成器:generator
两种方式:
1、使用列表生产式的改写
2、在方法中使用yield形式保存算法
1、将返回结果前面加上yield,第一次调用函数的时候, 返回值就是其实是函数没有执行,发现里面有yield关键字,直接返回下一个生成器对象
2、通过next获取生成器中保存的算法中的每一个值
3、生成器传入参数,可以动态改变算法
Send:
不能用在生成器的开始,首先使用next,然后再使用send,在获取下一个值的同时改变算法
优点:避免一次性加载大量数据
缺点:从第一个开始,每次推算出下一个


3.简答
说下对迭代器的理解,并用代码简单实现。
迭代是访问集合元素的一种方式。迭代器是一个可以记住遍历的位置的对象。迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。


4.简答
说下对装饰器的理解,并用代码简单实现。
装饰器,功能就是在运行原来功能基础上,加上一些其它功能,比如权限的验证,比如日志的记录等等。不修改原来的代码,进行功能的扩展。



网友评论