如何区别可变数据类型和不可变数据类型?
python的数据类型中int, str ,tuple是不可变数据类型
list,dict,set 是可变数据类型
那我们应该怎么样去区分是否可变呢?
可变就是在id地址不变的情况下值可以变,但是不可变的数据类型如果值变了,它的id指向会跟着变,指向一个新的id地址
例子:
不可变数据类型
num = 11
print(id(num))
num += 11
print(id(num))
"""
1602383184
1602383536
可变数据类型
lis = [11]
print(id(lis))
lis += [12]
print(id(lis))
"""
1352263411208
1352263411208
Python 垃圾回收机制?
引用计数:如果一个变量的引用计数为0 ,则会被python自动回收
循环引用:引用计数永远不会等于0
import sys
a = []
print(sys.getrefcount(a))
def func(a):
print(sys.getrefcount(a))
func(a)
print(sys.getrefcount(a))
Python 中会有函数或成员变量包含单下划线前缀和结尾,和双下划线前
缀结尾,区别是什么?
如何判断一个对象是函数还是方法?
super函数的用法
使用isinstance和type的区别
创建大量实例节省内存
上下管理器
判断一个对象中是否具有某个属性
property动态属性的使用
如何使用type创建自定义类
生成器的创建
TCP 和 UDP 的区别?
TCP服务端通信流程
创建线程的两种方式
解释线程资源竞争,以及解决方案
死锁出现的原因
进程之间的通信,以及进程池中的进程通信同步、异步、阻塞、非阻塞
进程、线程、协程对比
描述Python GIL的概念,以及它对Python多线程的影响