列表与元组的区别
- 可变性
元组不可变类型
列表可变类型,可以增加/删除/修改元素
- 相对大小
数据不可修改,选择使用元组类型
列表是可变类型,通常比元组占用更多的内存空间
- 使用场景
元组用于表示一些不会被修改的数据,例如坐标、日期等
列表通常用于存储一组动态变化的数据,例如用户输入记录、网络响应等
“==”运算符和“is”运算符的区别
- 本质
- "=="比较操作符:比较对象的value(值)是否相等;结果返回一个布尔值,即True或False
- "is"身份运算符:比较对象的内存地址id(身份标识)是否相等;结果返回一个布尔值,即True或False
- 应用场景
- "==" 通常用于比较值类型的对象,例如数值、字符串、列表等。
- "is" 通常用于比较引用类型的对象,例如自定义类的实例、函数等。
*args 和 **kwargs 区别
Python 函数参数前面一个星号(*)和两个星号(**)的区别 | 菜鸟教程
- *args位置参数:可接受任意个位置参数,当函数调用时,所有未使用的位置参数会在函数内自动组装进一个tuple对象中,此tuple对象会赋值给变量名args
- **kwargs关键字参数:可接受任意个关键字参数,当函数调用时,所有未使用的关键字参数会在函数内组装进一个dict对象中,此dict对象会赋值给变量名kwargs
- 定义函数时,*args要在**kwags之前,不然会发生语法错误
- *args和**kwargs组合起来可以传入任意的参数
进程、线程区别
- 本质区别:进程是操作系统资源分配的基本单位,而线程是处理器任务调度和执行的基本单位
- 包含关系:一个进程至少有一个线程,线程是进程的一部分
- 资源开销:每个进程都有独立的地址空间,进程之间的切换会有较大的开销;线程可以看做轻量级的进程,同一个进程内的线程共享进程的地址空间,每个线程都有自己独立的运行栈和程序计数器,线程之间切换的开销小
- 影响关系:一个进程崩溃后,在保护模式下其他进程不会被影响,但是一个线程崩溃可能导致整个进程被操作系统杀掉,所以多进程要比多线程健壮