python中的变量不像C语言中先声明后使用,它是使用的时候才被声明。
在C中总是先在内存声明一个空间,然后给予名字即变量,最后再把值存到里面。而python中总是先把这个值在内存中创建起来,然后给予一个名字即标签贴在这块内存上来代表这个变量。
当你把这个变量赋给另一个值(此时这个值已经在内存中创建起来)时,python就会把这个标签(变量名)贴到新变量的内存空间代表这个新变量,此时的旧值如果没有一个标签代表它,那么python就会自动清除掉这个值释放空间。个人觉得这比C好多了,C只能通过作用域来实现自动清除。
区分以下几种情况:
-
#a 和 b 各自指向两个不同的内存空间
-
a=2
-
b=3
-
-
#a 和 b 指向同一内存空间
-
a=2
-
b=a
-
-
#赋予a和b的值一样且小于某个值时可能指向同一内存空间
-
a=2
-
b=2
-
-
#赋予a和b的值一样且大于某个值时一般各自指向不同内存空间
-
a=999999999999999
-
b=999999999999999
最后两种情况是python中的对象缓存机制所致
总结:
C是先声明后使用,python是使用时创建
C中赋新值给变量是在原地改变,Python中新值在另一个地方创建并把变量指向它,原来的地址空间中还是原来的值
阅读(878) | 评论(0) | 转发(0) |