Python代码执行可视化
一、可变类型与不可变类型
不可变类型:内存中的数据不允许被修改
数字类型:int, bool, float, complex, long(2.x)
字符串:str
元组:tuple
对于不可变类型的变量,如果要更改变量,则会创建一个新值,把变量绑定到新值上,而旧值如果没有被引用就等待垃圾回收。
可变类型:内存中的数据可以被修改
列表:list
字典:dict
自定义类型(class定义的类型)
示例:
a = 10
b = a # 值传递(创建了一个变量b,绑定到了常量10上)
b = 100 # 将变量b重新绑定到了常量100上(因为常量10不可以被修改)
print(a)


a = [1,2,3,4,5,6,7,8,9,10]
b = a # 地址传递(创建了一个变量b,绑定到了列表[1,2,3,4,5,6,7,8,9,10]上)
b[1] = 10 # 将变量b绑定的列表第二个元素值修改为10(因为列表可以被修改)
print(a)



二、== 和 is
== 运算符:比较两个对象的值(对象中保存的数据)
is 运算符:比较对象的引用(标识)
通常,我们关注的是值,而不是标识,因此 Python 代码中 == 出现的频率比 is 高。
示例:
a = [1,2,3,4,5,6,7,8,9,10]
b = [1,2,3,4,5,6,7,8,9,10]
print(a == b)
print(a is b)


网友评论