变量赋值、多元赋值,is和==的区别
- 变量赋值
- 命名规则:变量名的第一个在字符不能是数字、变量名只能是数字,字母下划线的组合
- 变量赋值只能是=号,不能是==号;双等号是比较左右两边数据指向的地址是否一样的
- 变量赋值的解释
- a=10 / 首先我们现在内存中创建一个值,然后再创建一个标记a,然后再用这个标记a指向这个值
a = 10
b = a
a = 20
# 当a=20的时候在内存中又创建了一个值,然后标记a指向新的值,标记b指向原来a指向的值10
- python中的垃圾回收机制
- python中内存引用的基石是引用计数的,当一个对象的引用被反复创建或者复制时,对象的引用计数加1;当一个对象的应用被销毁时,对象的引用计数被减1,如果对象的引用计数被减为0,将对象所占用的内存释放;
- 多元赋值
- 多元赋值中 = 两边的对象都是元组并且元组的小括号是可选的
# 通常的格式是
x,y,z = 1,2,"a string" # 等价于(x,y,z) = (1,2,"a string")
x,y = y,x
# 与断言assert结合
(x,y) = (1,2)
assert x==1
assert y==2
- is和==号的区别
- is是判断两者是否指向同一块内存空间 # 返回值是True/False
- ==是判断两者指向的空间里面的内容是否是一致的
- 可以用id来查看变量指定的内存空间
- 总结结果
- 只要各对象的值是一样的,则x==y的值一定是True
- 如果对象的类型为整数或字符串且值一样,则x==y和x is y的值都是True
- 在浮点数中各对象的值一样,x==y的值为True;但是两者指向不同的内存空间,x is y的值为False
- 在list、tuple、dict、set中两者的值一样x==y的值为True,但两者指向不同的空间,x is y的值为False
- x == y 与 x != y的值相反、 x is y 与 x is not y的值相反