Python论坛  - 讨论区

标题:Re: Re: [python-chinese] 关于相同列表与字符串的id值问题

2004年08月09日 星期一 12:32

Dirk Ye mailing at wandy.cn
Mon Aug 9 12:32:05 HKT 2004

谢谢指正!

Dirk



----- Original Message ----- 
From: "Gary Jia" <gary at exoweb.net>
To: <python-chinese at lists.python.cn>
Sent: Monday, August 09, 2004 12:21 PM
Subject: 答复: Re: [python-chinese] 关于相同列表与字符串的id值问题


> 有一点你搞错了
> 那就是('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
> 

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号