Python中的变量与垃圾回收机制

Python与Java的变量本质上不一样,Python的变量本事是个指针。当Python解释器执行number=1的时候,实际上先在内存中创建一个int对象,然后将number指向这个int对象的内存地址,也就是将number“贴”在int对象上,测试用例如下:

1 number = [1, 2, 3]
2 demo = number
3 demo.append(4)
4 print(number)
5 # [1, 2, 3, 4]

==和is的区别就是前者判断的值是否相等,后者判断的是对象id值是否相等。

 1 class Person(object):
 2     pass
 3 
 4 p_0 = Person()
 5 
 6 p_1 = Person()
 7 
 8 print(p_0 is p_1) # False
 9 print(p_0 == p_1) # False
10 print(id(p_0))    # 2972754016464
11 print(id(p_1))    # 2972754016408
12 
13 li_a = [1, 2, 3, 4]
14 li_b = [1, 2, 3, 4]
15 
16 print(li_a is li_b) # False
17 print(li_a == li_b) # True
18 print(id(li_a))     # 2972770077064
19 print(id(li_b))     # 2972769996680
20 
21 a = 1
22 b = 1
23 
24 print(a is b)  # True
25 print(a == b)  # True
26 print(id(a))   # 1842179136
27 print(id(b))   # 1842179136

Python有一个优化机制叫intern,像这种经常使用的小整数、小字符串,在运行时就会创建,并且全局唯一。
Python中的del语句并不等同于C++中的delete,Python中的del是将这个对象的指向删除,当这个对象没有任何指向的时候,Python虚拟机才会删除这个对象。

转载于:https://www.cnblogs.com/python01/p/10177658.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值