-
什么是装饰器
装饰器是一个函数,这个函数的主要作用是包装另一个函数
包装的目的是不改变原函数的情况下增加新的功能 -
正则匹配邮箱
[a-zA-Z0-9_.-]+@[a-zA-z0-9]+.[a-z]
身份证匹配
(\d+{18})|(\d{15})|(\d{17}(\d|X|x)) -
python垃圾回收机制
垃圾回收: python解释器都市正在使用的函数保持计数,当某个对象计数降为0时。垃圾收集器也就可以释放该对象,获取分配的内存,当分配对象和取消分配对象的差值高于阈值时垃圾收回才会启动。
分代回收:python将所有的对象分为0,1,2三代。所有的新建对象都是0代对象对象,当某一代对象经历过垃圾回收依然存活,那么他就被归入下一代对象,垃圾回收启动,一定会扫描所有的0代对象。 -
多进程与多线程的区别 CPU密集适用什么:
多线程:在单个程序中同时运行多个线程完成不同的工作,称为多线程,线程共享内存空间,进程的内存是独立的
同一个进程之间可以直接交流,两个进程通信,必须通过一个中间代理来实现
一个X线成可以控制和操作同一进程里的其他线程,但是进程只能操作子进程,
优缺点:
1. 多进程的优点是稳定性好,一个子进程崩溃了,不会影响主进程以及其余进程,大那是缺点是创建进程的代价非常大,因为错A座系统要给每个进程分配固定的资源
2. 多线程优点的效率较高一些,但是致命 的缺点是任何一个县城崩溃都可能。造成整个进程的崩溃,因为他们共享了进程的内存资源池。
CPU密集适合多进程开发。 -
通信方式有几种
管道(Pie) 系统IPC(消息队列,信号量,共享存储),socket -
什么是协程
协程是一个可以暂停的函数,当函数暂停时,可以跳出函数执行其他内容,重新加载时可以继续执行。
yield是协程中的关键字
协程的原理:
记录一个上细纹栈帧,协程切换时会记录栈帧的位置,切换回来时进行调取,恢复原有的执行内容,
优点: 占用资源少,效率高。可以同时执行多个任务
缺点: 无法利用计算机资源 -
range和xrange的区别
xrange返回的是一个生成器,取一个用一个
range是生成一个列表。占用内存 -
快排算法
def QuickSort(myList,start,end): #判断low是否小于high,如果为false,直接返回 if start < end: i,j = start,end #设置基准数 base = myList[i] while i < j: #如果列表后边的数,比基准数大或相等,则前移一位直到有比基准数小的数出现 while (i < j) and (myList[j] >= base): j = j - 1 #如找到,则把第j个元素赋值给第个元素i,此时表中i,j个元素相等 myList[i] = myList[j] #同样的方式比较前半区 while (i < j) and (myList[i] <= base): i = i + 1 myList[j] = myList[i] #做完第一轮比较之后,列表被分成了两个半区,并且i=j,需要将这个数设置回base myList[i] = base #递归前后半区 QuickSort(myList, start, i - 1) QuickSort(myList, j + 1, end) return myList myList = [49,38,65,97,76,13,27,49] print("Quick Sort: ") QuickSort(myList,0,len(myList)-1) print(myList)
-
冒泡排序
def bubbleSort(myList): # 首先获取list的总长度,为之后的循环比较作准备 length = len(myList) # 一共进行几轮列表比较,一共是(length-1)轮 for i in range(0, length - 1): # 每一轮的比较,注意range的变化,这里需要进行length-1-长的比较,注意-i的意义(可以减少比较已经排好序的元素) for j in range(0, length - 1 - i): # 交换 if myList[j] > myList[j + 1]: tmp = myList[j] myList[j] = myList[j + 1] myList[j + 1] = tmp # 打印每一轮交换后的列表 # for item in myList: # print(item) # print("=============================") return myList print("Bubble Sort: ") myList = [1, 4, 5, 0, 6] mylist = bubbleSort(myList) print(mylist)
-
TCP 和UDP的区别,三次握手四次挥手:
TCP协议:面向连接–可靠的–流式套接字
UDP协议:面向无连接额–不可靠的–数据报套接字
三次握手:
1. 客户端向服务器发起请求
2. 服务器收到情亲返回报文允许连接
3. 客户端收到许可,建立连接
四次挥手:
1. 主动方发送报文告知被动方要断开连接
2. 被动方收到报文 准备断开
3. 被动放发送报文给主动方,告知准备就绪可以断开,
4. 主动方断开连接 -
HTTP全过程:
域名解析–发起TCP三次握手 – 建立TCP连接 – 发起HTTP请求 – 服务器响应HTTP请求 – 浏览器得到HTML代码 – 浏览器解析HTML代码,并请求HTML代码中的静态文件(CSS、JS、图片) – 浏览器渲染给用户。 -
深拷贝和浅拷贝的区别 :
浅拷贝只复制指向某个对象的引用地址。而不是对象本身。新旧对象还是共用一块内存 cp.copy
深拷贝会另外创造一个一模一样的对象,跟就对象不共享内存,修改新对象旧对象不会改变。cp.deepcopy -
__new__和__init__的区别:
__new__用于创建实例对象
__init__用于初始化实例对象。
python--基础
最新推荐文章于 2022-04-27 21:30:32 发布