作者KSJ (阿真)
看板Python
标题Re: [问题] 新手请益
时间Fri Mar 20 19:26:37 2009
※ 引述《adrianshum (Alien)》之铭言:
: ※ 引述《KSJ (阿真)》之铭言:
: : 自问自半答
: : 抱歉 後来又去看了原po的文章 发现是import module时的才是
: : 我自己也写了一个KSJ.py测试 内容如下:
: 如果真的是 pointer 的话, 那就不是 '变数 a 和 变数 b 放在同一位置'.
^^^^
: 而是 a 和 b 的值是一样, 即是 a 和 b 指向的东西一样而已.
谢谢观念的指导 "放在"应该改成"指向"
: a 和 b 所在的位置可以不一样(也不会一样, 不然再写一句 a = 'x' 的话,
: b 不就一起改变了吗?)
的确:)
另外测试如下:
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
每次指向的位置都不一样
这样看来 object跟pointer是不一样的
obejct应该怎麽解释比较好呢??@_@a
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.63.199
※ 编辑: KSJ 来自: 140.112.63.199 (03/20 19:39)
1F:推 ykjiang:a = 'e' # 可看成为一内容 'e' 的 object 加上 a 标签 03/20 20:38
2F:→ ykjiang:Python 变数,跟 Java 物件的变数一样,都只是个reference 03/20 20:39