为了账号安全,请及时绑定邮箱和手机立即绑定

1.请给出str对象"中文编程"的引用计数 a = "中文编程"

1.请给出str对象"中文编程"的引用计数 a = "中文编程"

Myworld3464055 2016-06-21 23:14:47
这个是什么意思求解释   或者有一起学习的 Q我
查看完整描述

2 回答

已采纳
?
Jenkins_lee

TA贡献12条经验 获得超18个赞

当对象被创建并赋值或引用给n个变量时(n为正整数),该对象的引用计数就为n。例:
x = 3.14  #创建浮点型对象3.14并指向变量x,即引用计数为1
y = x        #创建浮点型对象3.14的别名为变量y,引用计数+1,即为2。

总之,对象的引用计数增加有以下几种情况:

对象被创建:x = 3.14

对象别名被创建:y = x

作为参数传递给函数:round(x)

成为容器对象的元素:mylist = [1 , x , ' abc ']

当引用计数为为0时,对象将被回收

---------------------------------------------------------

a = "中文编程"   #结合上面所述,创建了字符串对象并指向变量a, 即引用计数为1

查看完整回答
4 反对 回复 2016-06-22
?
清波

TA贡献165条经验 获得超90个赞

六.已知如下代码________

a = "中文编程"
b = a
c = a
a = "python编程"
b = u'%s' %a
d = "中文编程"
e = a
c = b
b2 = a.replace("中","中")
  1. 请给出str对象"中文编程"的引用计数

  2. 请给出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对象.

查看完整回答
1 反对 回复 2016-06-22
  • 2 回答
  • 0 关注
  • 1600 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信