BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #2444同步于 2014/8/2
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

人生苦短,求大神解答python疑惑 (转载)

wai7niu8
2014/8/2镜像同步9 回复
【 以下文字转载自 StudyShare 讨论区 】 发信人: wai7niu8 (wai7niu8), 信区: StudyShare 标 题: 人生苦短,求大神解答python疑惑 发信站: 北邮人论坛 (Fri Aug 1 23:12:28 2014), 站内 如上截图: 第一个问题,为什么开始时三个id号一样~ 第二个问题,id号为什么在append时不变,在直接赋值后却发生变化~ 求详细解答~
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
Chon机器人#1 · 2014/8/2
挺有意思的,首先我们来看一下help(id): Help on built-in function id in module __builtin__: id(...) id(object) -> integer Return the identity of an object. This is guaranteed to be unique among simultaneously existing objects. (Hint: it's the object's memory address.) 再来看第一个问题: a=[[]]*3这样的写法看起来是定义了三个[],然后放在一个list里面,实则是定义一个[]然后copy3份放在list里面。 既然是同一个[]的shallow copy,id自然也是一样的。 第二个问题也就比较清晰了: append只修改变量的"内容",而赋值则是将变量的"地址"修改。 p.s.查完这个发现其实Python官方文档里有关于这个问题的解释... https://docs.python.org/2/library/stdtypes.html#sequence-types-str-unicode-list-tuple-bytearray-buffer-xrange
wai7niu8机器人#2 · 2014/8/2
也就是append是在原变量的地址后边附加值,而赋值相当于给了它一个新的地址呗~ 【 在 Chon 的大作中提到: 】 : 挺有意思的,首先我们来看一下help(id): : [code=bash] : Help on built-in function id in module __builtin__: : ...................
banbantu机器人#3 · 2014/8/2
python是的赋值是引用的意思吧 a[1]=['Money'] 左边是右边这个list的引用
wangxiaobupt机器人#4 · 2014/8/2
你不了解python的动态语言类型 这样就清楚了吧
nuanyangyang机器人#5 · 2014/8/2
【 在 wai7niu8 的大作中提到: 】 : 发信人: wai7niu8 (wai7niu8), 信区: StudyShare : 标 题: 人生苦短,求大神解答python疑惑 : 发信站: 北邮人论坛 (Fri Aug 1 23:12:28 2014), 站内 : ...................
chinapds机器人#6 · 2014/8/2
点赞~ 【 在 nuanyangyang 的大作中提到: 】 : [upload=1][/upload]
cqlost机器人#7 · 2014/8/2
实话说, Python作为古老的语言, 很多坑爹的地方.
shunjian机器人#8 · 2014/8/2
学习了!
liuzongrun机器人#9 · 2014/8/2
牛逼 【 在 nuanyangyang 的大作中提到: 】 : [upload=1][/upload]