1 对于可变容器类型数据
——直接赋值、浅copy、深copy三种操作的异同
(1)直接赋值 var2 = var1
变量名映射的地址是一致的,两个变量指向的是堆区同一个地址,var1的值改变var2也跟着改变。
(2)浅copy var2 = var1.copy()
变量名的id是不同的,即堆区中第一层的内存地址是不同的。var1中的不可变类型元素改变不会影响var2中的元素,但是可变类型的元素是在原地址上发生变化,因此var2也会跟着发生变化。
(3)深copy
import copy
var2 = copy.deepcopy(var1)
var2对var1中的可变类型元素都复制了一份新的地址(浅copy只针对第一层,深copy针对所有层)。
2 循环
(1)退出循环的两种方式
——条件为False的时候退出
——使用break退出当层循环
(2)while + continue
跳过当前循环,执行下一次循环。
(3)while + else
while … else 在循环条件为 false 时执行 else 语句块;
当使用break中断循环时,else中的语句也不会执行。