高级编程(深浅拷贝,生成器,迭代器,装饰器)

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.简答

说下对装饰器的理解,并用代码简单实现。

装饰器,功能就是在运行原来功能基础上,加上一些其它功能,比如权限的验证,比如日志的记录等等。不修改原来的代码,进行功能的扩展。


你可能感兴趣的:(高级编程(深浅拷贝,生成器,迭代器,装饰器))