作者KSJ (阿真)
看板Python
标题Re: [问题] 新手请益
时间Fri Mar 20 20:01:21 2009
上篇测试如下:
KSJ.py
--
a = "e "
b = "e "
c = "ee"
print ( a is b ),id(a),id(b),id(c) #与之前一样
a = 'QQ' #改变a的值
print id(a),id(b) #看看位置是否改变
print b #看看b值有没有跟着变
a = "e " #把a值改回去
print id(a),id(b) #位置又如何呢??
--
>>> import KSJ
True 12654208 12654208 10772704 #与之前一样 a与b"位置"同
12654272 12654208 #换完数值之後 "位置" a的变了
e #显然b值没变
12654208 12654208 #奇怪的是 把a值改回去後指向的 "位置"跟b一样
为什麽会说"奇怪" 原因是 在shell底下:
>>> id('e ')
12654464
>>> id('e ')
12654368
>>> id('e ')
12654304
每次指向的位置都不一样
obejct应该怎麽解释比较好呢??@_@a
"pointer to something real" 指向某些东西(我上面所说的"位置")
那个位置上有"值"
所以我在module里写:
KSJ.py
--
print id('e ')
print id('e ')
print id('e ')
--
结果是:
>>> import KSJ
12654144
12654144
12654144
所以我推论:
在module的执行过程里
Python会"自动"设 某个变数 把'e '这个字串 存起来 并指向一个位置
在shell里
>>>id('e ') 执行完就会把 "某个变数" 自动清除
所以每次都会有不一样的id位置
推论这个有什麽用吗orz...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.63.199
※ 编辑: KSJ 来自: 140.112.63.199 (03/20 19:39)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.63.199
1F:推 adrianshum:有用, 就是不要以为同内容的字串一定是同一 obj 喽 03/20 20:52