python变量的指向

lcqqcllcqqcl 2017-11-30 11:19:12
a=<_sre.SRE_Match object; span=(1, 2), match='A'>
a=2 #为什么会报错

b=2
b='re' #为什么就不会错呢?
请指点一下我这渣渣。
...全文
298 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
lcqqcllcqqcl 2017-12-07
  • 打赏
  • 举报
回复
感谢各位。帮了小弟大忙。果然在csdn上提问是正确的。感谢
ckc 2017-12-03
  • 打赏
  • 举报
回复
python里的变量全部都是引用,或者说是指针,指向什么东西都可以 >>> a=1000 >>> b=1000 >>> id(a) 10099640 #a指向的地址 >>> id(b) 10099664 #b指向的地址 >>> b=a >>> id(b) #b=a实际上就是把a的地址赋给了b 10099640 >>> a=a+1 #a=a+1实际上是计算出a+1之后另外分配了一个地方存放这个结果,把这个新的结果存放的地址给了a >>> id(a) 10099652 >>> id(b) #b的地址和指向的内容都没有改变 10099640
混沌鳄鱼 2017-12-02
  • 打赏
  • 举报
回复


《流畅的Python》第8章
混沌鳄鱼 2017-12-02
  • 打赏
  • 举报
回复
lcqqcllcqqcl 2017-12-01
  • 打赏
  • 举报
回复
引用 9 楼 lcqqcllcqqcl 的回复:
[quote=引用 8 楼 xpresslink 的回复:] [quote=引用 7 楼 lcqqcllcqqcl 的回复:] [quote=引用 4 楼 xpresslink 的回复:] 在Python中不用考虑变量本身的类型问题,因为在Python中变量实际上都指向对象的引用,所以要考虑的是指向的对象的类型。
那为什么a指向SRE_Match 对象时,就不能让a变量指向其他的对象? 而b原先指向int对象时,b却能改变,指向str对象?[/quote] 不可能发生你说这种现象。 你能不能发个完整的截图吧,有代码有错误信息一起的? 直接把所有内容选中了复制贴过就行了。[/quote] 不好意思,是我粗心搞错了,摆了乌龙,另附代码: 不过我还是有点不明白,为什么可以指向不同的对象,你说的指向对象的引用是什么意思,如果说是变量的引用(c++),那还能理解,但指向对象的引用就不懂了??[/quote] 执行完第一句,a指向 SRE_Match 对象
lcqqcllcqqcl 2017-12-01
  • 打赏
  • 举报
回复
引用 8 楼 xpresslink 的回复:
[quote=引用 7 楼 lcqqcllcqqcl 的回复:]
[quote=引用 4 楼 xpresslink 的回复:]
在Python中不用考虑变量本身的类型问题,因为在Python中变量实际上都指向对象的引用,所以要考虑的是指向的对象的类型。


那为什么a指向SRE_Match 对象时,就不能让a变量指向其他的对象?
而b原先指向int对象时,b却能改变,指向str对象?[/quote]

不可能发生你说这种现象。

你能不能发个完整的截图吧,有代码有错误信息一起的? 直接把所有内容选中了复制贴过就行了。[/quote]

不好意思,是我粗心搞错了,摆了乌龙,另附代码:

不过我还是有点不明白,为什么可以指向不同的对象,你说的指向对象的引用是什么意思,如果说是变量的引用(c++),那还能理解,但指向对象的引用就不懂了??
混沌鳄鱼 2017-12-01
  • 打赏
  • 举报
回复
引用 7 楼 lcqqcllcqqcl 的回复:
[quote=引用 4 楼 xpresslink 的回复:] 在Python中不用考虑变量本身的类型问题,因为在Python中变量实际上都指向对象的引用,所以要考虑的是指向的对象的类型。
那为什么a指向SRE_Match 对象时,就不能让a变量指向其他的对象? 而b原先指向int对象时,b却能改变,指向str对象?[/quote] 不可能发生你说这种现象。 你能不能发个完整的截图吧,有代码有错误信息一起的? 直接把所有内容选中了复制贴过就行了。
lcqqcllcqqcl 2017-12-01
  • 打赏
  • 举报
回复
引用 4 楼 xpresslink 的回复:
在Python中不用考虑变量本身的类型问题,因为在Python中变量实际上都指向对象的引用,所以要考虑的是指向的对象的类型。
那为什么a指向SRE_Match 对象时,就不能让a变量指向其他的对象? 而b原先指向int对象时,b却能改变,指向str对象?
lcqqcllcqqcl 2017-12-01
  • 打赏
  • 举报
回复
引用 1 楼 u012536120 的回复:
老实说,我第一句就报错了。
a=<_sre.SRE_Match object; span=(1, 2), match='A'>
右边的是什么类型啊。

感觉好像可以随便赋值的样子


不好意思,我没补全

混沌鳄鱼 2017-11-30
  • 打赏
  • 举报
回复
在Python中不用考虑变量本身的类型问题,因为在Python中变量实际上都指向对象的引用,所以要考虑的是指向的对象的类型。
混沌鳄鱼 2017-11-30
  • 打赏
  • 举报
回复
你这个报错的应该是由第一句引起的。 你只复制了一部分代码吧? 第一句这样写就是语法错误。
碧水幽幽泉 2017-11-30
  • 打赏
  • 举报
回复
a是一个Match object,所以会报错。 而b是一个普通的字符串变量,可以随便赋值,不会报错。
sanGuo_uu 2017-11-30
  • 打赏
  • 举报
回复
老实说,我第一句就报错了。 a=<_sre.SRE_Match object; span=(1, 2), match='A'> 右边的是什么类型啊。 感觉好像可以随便赋值的样子
extend 2017-11-30
  • 打赏
  • 举报
回复
第一句就过不去,python里什么数据类型用<>?

37,721

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧