1、python对象的比较和拷贝?
答:'=='操作符比较对象之间的值是否相等;'is'操作符比较的是对象的身份标识是否相等,即它们是否是同一个对象,是否指向同一个内存地址; 比较操作符'is'的速度效率,通常优于'==';
浅拷贝和深拷贝:
浅拷贝,将原对象或原数组的引用直接赋值给新对象、新数组,新对象/数组只是原对象的一个引用;
深拷贝,创建一个新的对象和数组,将原对象的各项属性的”值“拷贝过来,是"值"而不是"引用";
2、什么是迭代器和生成器?
答:容器是可迭代对象(字符串、列表、元组、集合、字典),可迭代对象调用iter()函数,可以得到一个迭代器。迭代器可以通过next()函数来得到下一个元素,从而支持遍历;
生成器是一种特殊的迭代器,使用生成器可以写出更加清晰的代码;合理使用生成器,可以降低内存占用、优化程序结构、提高程序速度;python2、3实现生成器的方式分别是协程和async await;
3、面向过程和面向对象的区别?
答:面向过程,效率高,耦合度高,扩展性低;(注重实现这个功能的步骤和因果关系)
面向对象,效率差,耦合度低,扩展性高;(每个单元都实现成对象,各个对象之间协作起来形成一个系统)
4、进程、线程、协程的区别?
协程是单线程;协程由用户决定,在哪些地方交出控制权,切换到下一个任务;
线程是指进程内的一个执行单元,也是进程内的可调度实体;
1.地址空间,线程是进程内的一个执行单元,进程内至少有一个线程,它们共享进程的地址空间,而进程有自己独立的地址空间;
2.资源拥有,进程是资源分配和拥有的单位,同一个进程内的线程共享进程的资源;
3.线程是处理器调度的基本单位,而进程不是;
4.二者均可并发执行;
5.每个独立的线程有一个程序运行的入口、顺序执行序列和成簇出口,但线程不能够独立执行,必须依存于应用程序中;
多进程,使用multiprocessing,使用多核cpu;
多线程,使用threading,完成IO密集型并发操作;
协程,使用gevent,用于非阻塞异步并发;
标签:面试题,协程,迭代,python,生成器,对象,线程,进程 From: https://www.cnblogs.com/testerxm/p/17311271.html