清波
六.已知如下代码________a = "中文编程"
b = a
c = a
a = "python编程"
b = u'%s' %a
d = "中文编程"
e = a
c = b
b2 = a.replace("中","中")请给出str对象"中文编程"的引用计数请给出str对象"python编程"的引用计数这个是 题主的问题的完整版吧?这就要说到 Python 的变量存储机制了, 一般来说,Python 的变量名 和变量值 被形容为 “标签式”: 变量名是标签,变量值是 一个贴着某些(个)标签的物体, 比如上面的代码中的 字符串对象 “中文编程” 就是变量值,也就是 物体。#第一次赋值给a, 那么就是在 “中文编程”上贴了一个标签 “a”。
#后面的 b=a, 则是在 “中文编程”上又贴了一个标签b。
#c = a , 同理,省略。
#a = "python编程" 这句 就是将a标签从"中文编程" 上撕了下来,贴到了"python编程"上,但是注意 b, c 任然
# 贴在 "中文编程"上。
# b = u'%s' %a,此处 标签b也从"中文编程"上撕了下来,贴到了 "python编程"上面, 这个需要用 内置函数 id# 来验证。
# d = "中文编程" , 这一句比较有迷惑性,看着像是在"中文编程" 这个物体上 又贴了一个标签d, 但是实际上是,# 重新建立了一个"中文编程" ,并且贴了一个标签d.
# e = a, 没什么可解释的, 贴标签。
# c = b, 同上。
# b2 = a.replace("中","中"), 需要说明, 这一句 等同于 b2 = a。恩, 至于问题 留着题主自己数数吧, 原理基本上就是这样了。有什么不对的地方,欢迎大家指正。另外,有一点需要说明, 在 上面解释中 , 我们说 a = "中文编程",d = "中文编程", 是 新建对象,并且贴标签, 也就是说变量a 和变量d 不是指向同一个对象, 但是 对于一些比较小的整数(Python3.x 中是 -5 到 256) 则是直接贴标签, 而没有新建int对象.