2004年08月09日 星期一 13:13
Hollo hoxide: 嗯嗯!看来这也是 Python 处理内存的策略之一! 凡是指向定量的,全部是复制引用! [f:\4nt401]python Python 2.3.4 (CJK/SJIS) (#53, May 27 2004, 05:49:12) [MSC v.1200 32 bit (Intel)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> a=["time"] >>> type(a)>>> b=("time") >>> b 'time' >>> type(b) >>> c=("time",) >>> type(c) >>> c ('time',) >>> d=c >>> id(c) 9681424 >>> id(d) 9681424 >>> /******** [2004-08-09]13:10:57 ; hoxide wrote: hoxide> Gary Jia,您好! hoxide> 这点我的确没看出来:) hoxide> ======= 2004-08-09 12:21:23 您在来信中写道:======= >>有一点你搞错了 >>那就是('time') 并不是元组它仍然是一个字符窜 >>你可以通过type方法来看。 >>如果你需要一个元组应该是 ('time',) >>所以两个值相等的元组和序列都有不同的地址。 >> >>-----邮件原件----- >>发件人: python-chinese-bounces at lists.python.cn >>[mailto:python-chinese-bounces at lists.python.cn] 代表 hoxide >>发送时间: 2004年8月9日 11:29 >>收件人: python-chinese at lists.python.cn >>主题: Re: Re: [python-chinese] 关于相同列表与字符串的id值问题 >> >>Dirk Ye,您好! >> >> 就是这么回事. >> >>======== 2004-08-09 10:19:25 您在来信中写道: ======== >> >>我的理解: >> >> >> 这里的问题不仅仅是引用这么简单,其实这是普遍的编译器(解释器也应该如此) >>针对性能的一种优化,具体分析如下: >> >> 编译器/解释器为了节约系统资源以及提高本身的效率,面对常量值和变量值会区 >>别对待: >> >> >> 1、当解释器看到两个相同值的常量变量的时候,他们不会申请新的内存,只是增 >>加第一个变量的地址引用数,所以你看到初始的a和b是相同的地址;但如果你要改变a >>或b的值以后,a和b的引用地址将不再相同,因为解释器会为修改的变量重新申请内存 >>并修改相应的地址引用。 >> >> 2、当解释器遇到的是可变变量的时候,它认为用户会随时改变变量值,所以使用 >>的是不同的地址。 >> >> >> 在Python中,字符串和元组是属于常量变量,他们符合第一种情况;而序列属于可 >>变变量,符合第二种情况。 >> >> 验证如下: >> >> >>>>> a = "time" >>>>> b = "time" >>>>> id(a) >>16636288 >>>>> id(b) >>16636288 >>>>> a += "s" >>>>> id(a) >>20165312 >>>>> id(b) >>16636288 >>>>> m = ("time") >>>>> n = ("time") >>>>> id(m) >>16636288 >>>>> id(n) >>16636288 >>>>> s = ["time"] >>>>> t = ["time"] >>>>> id(s) >>20361424 >>>>> id(t) >>20515760 >>>>> >> >> >>请指正!!! >> >> >> >> >>----- Original Message ----- >>From: zhou hunter >>To: python-chinese at lists.python.cn >>Sent: Sunday, August 08, 2004 7:49 AM >>Subject: [python-chinese] 关于相同列表与字符串的id值问题 >> >> >>wish you a good day: >> 在整理笔记中有一个问题,举例子如下: >>>>> a="time" >>>>> b="time" >>>>> id(a) >>12616688 >>>>> id(b) >>12616688#id值可以看出a,b指向且都指向“time" >>>>> a=['time'] >>>>> b=['time'] >>>>> id(a) >>15300640 >>>>> id(b) >>15300680#可以看除a,b 指向了 “【"time"】”但两个time却不同。 >>1,id是对数据的唯一标识符,"time"与"time"是同一数据,而列表的却截然不同 >>2,数据应是储存在内存的,那么“time"与'time'是同一位置,而列表的却不是。 >>我想请问到底为什么一旦列表,即使相同表的实际指向却是不同的,而不列表却相同? >>(我正在搜索这些资料,希望可以找到) >> >> 谢谢 >> zhou_hunter >> >> >> >> >>Do You Yahoo!? >>150万曲MP3疯狂搜,带您闯入音乐殿堂 >>美女明星应有尽有,搜遍美图、艳图和酷图 >>1G就是1000兆,雅虎电邮自助扩容! >> >> >> >>_______________________________________________ >>python-chinese list >>python-chinese at lists.python.cn >>http://python.cn/mailman/listinfo/python-chinese >> >> >>= = = = = = = = = = = = = = = = = = = = = = >> 致 >>礼! >> >> hoxide >> hoxide_dirac at yahoo.com.cn >> 2004-08-09 >>_______________________________________________ >>python-chinese list >>python-chinese at lists.python.cn >>http://python.cn/mailman/listinfo/python-chinese >> hoxide> = = = = = = = = = = = = = = = = = = = = hoxide> 致 hoxide> 礼! hoxide> hoxide hoxide> hoxide_dirac at yahoo.com.cn hoxide> 2004-08-09 ********************************************/ -- Free as in Freedom Zoom.Quiet #=========================================# ]Time is unimportant, only life important![ #=========================================# sender is the Bat!2.12.00
Zeuux © 2024
京ICP备05028076号