1.常用的 Python 标准库都有哪些?
常用库:
os 操作系统 random 随机 queue 队列
time 时间 threading 线程 multiprocessing 进程
第三方库:
Django Flask这两个也算 requests selenium scrapy celery等
2__init__和__new__ 的区别?
__init__ 在对象创建后,对对象进行初始化。
__new__ 是在对象创建之前创建一个对象,并将该对象返回给 init
3. 什么是Python的自省?
在计算机编程中,自省是指:检查某些事物以确定它是什么,它知道什么以及它能做什么,自省向程序员提供了极大的灵活性和控制力。
简单点说就是:自省就是面向对象的语言所写的程序在运行时,能够知道对象的类型,简单一句话就是:运行时能够获知对象的类型。
例如:Python,Ruby,C++都有自省的能力,这里面C++的自省能力最弱,只能够知道是什么类型,而Python可以知道是什么类型,还有什么属性。
4.给定两个列表,找出它们相同的元素和不相同的元素?
下面展示简易代码
list1 = [1, 2, 3]
list2 = [3, 4, 5]
set1 = set(list1)
set2 = set(list2)
print(set1 & set2) # & 的作用是取交集
print(set1 ^ set2) # ^ 的作用是获取只在一个集合中出现的元素
print(set1 | set2) # | 的作用是并集
5.多进程,多线程,以及协程的理解,什么时候用?
进程:
一个运行的程序(代码)就是一个进程,没有运行的代码叫程序,进程是系统资源分配的最小单位,拥有自己独立的内存空间所以进程间数据不共享,开销大。
线程:
调度执行的最小单位,也叫执行路径,不能独立存在,依赖进程 存在一个进程至少有一个线程,叫主线程,而多个线程共享内存(数据共享,共享全局变量),从而极大提高了程序的运行效率。
协程:
是一种用户态的轻量级线程,协程的调度完全由用户控制。
协程拥有自己的寄存器上下文和栈。 协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。
用途:
一般下载文件时,或者业余时间用过多线程写爬虫,提高效率。