动态类型简介

对象 变量和引用
变量的类型在运行中自动决定而不是通过程序手动指定
变量永远不会有任何的和它关联的类型信息和约束,变量是通用的,只是在特定的时间点简单得引用一个特定的对象
a=3赋值的过程:
	1.创建一个对象2,创建一个变量如果它还没有创建,3将变量与对象连接

变量是一个系统表的元素,拥有指向对象的连接的控件
对象是被分配的一块内存,有足够的控件表现他们所代表的值
引用是自动形成的从变量到对象的指针
类型属于对象而不是变量
垃圾回收机制
Python在每个对象中保持了一个计数器,计数器记录了当前只想该对象的引用的数目。一旦这个计数器被设置为零,这个对象的内存空间就会自动回收。垃圾收集最直接的,可高收到的好处就是:这意味着可以在脚本中任意使用对象而不需要考虑释放内存空间。 
共享引用
>>> a=3 >>> b=3 >>> a=“spam” 变量a引用了由常量表达式spam所创建的新的对象,但是变量b仍旧引用原始的对象3,因为这个赋值运算改变的不是对象3,仅仅改变了变量a,变量b并没有发生改变。 在python中,变量总是一个指向对象的指针,而不是可改变的内存区域的标签。给一个变量赋一个新的值,并不是替换了原来的对象,而是让这个变量去完成引用完全不同的一个对象。 
共享引用与原处修改
>>> L1 [24,3,4] >>> L2 [24,3,4] 在这里,没有改变L1,而是改变了L1所引用的对象的一个元素。这类修改会覆盖列表对象中的某部分。因为这个列表对象是与其他对象共享的,那么一个像这样在原处的改变不仅仅会对L1有影响,而且会影响L2。 
>>> L1 = [2,3,4] >>> L2 = L1[:] >>> L1[0] = 24 
>>> L1 [24,3,4] >>> L2 [2,3,4] 这里,对L1的修改不会影响L2,因为L2引用的是L1所引用对象的一个拷贝,也就是说,两个变量指向了不同的内存区域。 
共享引用和相等
"=="操作符测试两个被引用的对象是否有相同的值。 “is操作符“是在检查对象的同一性。 
>>> L1 = [2,3,4] >>> L2 = [2,3,4] >>> L1 == L2 True >>> L1 is L2 False 
小的整数和字符串在内存中被缓存并且会被复用。 >>> X = 42 >>> Y = 42 >>> X == Y True >>> X is Y True 

>>> L1 = [2,3,4] >>> L2 = L1 >>> L1[0] = 24 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值