找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

查看: 20482|回复: 26

[求助] python初学者 求助QAQ

2

主题

13

帖子

13

积分

贫民

积分
13
cyrusxu 发表于 2014-5-29 22:45:49 | 显示全部楼层 |阅读模式
身份操作符is
>>> x='abc a'
>> y='abc a'
>>> x is y
False
>>> x='a'
>>> y='a'
>>> x is y
True

怎么会这样。。不是应该也是false嘛。。。


回复

使用道具 举报

0

主题

6

帖子

6

积分

贫民

积分
6
ping0205 发表于 2014-5-30 12:57:24 | 显示全部楼层
这个是python的一种机制,叫做小整数和短字符串缓存复用。至于多小和多短怎么定义,你自己可以试一下,应该是3位以下(包含3位)整数称为小整数,长度2位以下(包含2位)字符串称为短字符串。
回复 支持 2 反对 0

使用道具 举报

2

主题

13

帖子

13

积分

贫民

积分
13
cyrusxu  楼主| 发表于 2014-5-29 23:15:07 | 显示全部楼层
求助啊啊啊啊啊啊啊
回复 支持 反对

使用道具 举报

0

主题

9

帖子

9

积分

贫民

积分
9
occultist 发表于 2014-5-30 23:35:02 | 显示全部楼层
本帖最后由 occultist 于 2014-5-30 23:41 编辑

应该全是 true 才对啊
回复 支持 反对

使用道具 举报

2

主题

13

帖子

13

积分

贫民

积分
13
cyrusxu  楼主| 发表于 2014-5-30 23:59:12 | 显示全部楼层
ping0205 发表于 2014-5-30 12:57
这个是python的一种机制,叫做小整数和短字符串缓存复用。至于多小和多短怎么定义,你自己可以试一下,应该 ...

可是。。
>>> a=' a'
>>> b=' a'
>>> a is b
False
。。按你说的,,这应该是true才对啊。。。可是他是false  QAQ
回复 支持 反对

使用道具 举报

2

主题

13

帖子

13

积分

贫民

积分
13
cyrusxu  楼主| 发表于 2014-5-30 23:59:43 | 显示全部楼层
occultist 发表于 2014-5-30 23:35
应该全是 true 才对啊

不是不是,这个是对象引用,指向的存储单元是不一样的,所以a is b应该是false
回复 支持 反对

使用道具 举报

0

主题

9

帖子

9

积分

贫民

积分
9
occultist 发表于 2014-5-31 00:06:06 | 显示全部楼层
在 python 里 值一样的 就应该是 同一个对象的引用.
加空格的字符串 不一样 ,我才觉得奇怪.
回复 支持 反对

使用道具 举报

2

主题

13

帖子

13

积分

贫民

积分
13
cyrusxu  楼主| 发表于 2014-5-31 00:08:55 | 显示全部楼层
occultist 发表于 2014-5-31 00:06
在 python 里 值一样的 就应该是 同一个对象的引用.
加空格的字符串 不一样 ,我才觉得奇怪. ...

但是就算是值一样 应该也是不同的存储单元吧0.0
回复 支持 反对

使用道具 举报

0

主题

9

帖子

9

积分

贫民

积分
9
occultist 发表于 2014-5-31 00:24:47 | 显示全部楼层
cyrusxu 发表于 2014-5-31 00:08
但是就算是值一样 应该也是不同的存储单元吧0.0

是一样的存储单元, python 就是这样变态.
回复 支持 反对

使用道具 举报

0

主题

2

帖子

8

积分

贫民

积分
8
308795822 发表于 2014-6-1 18:46:56 | 显示全部楼层
cyrusxu 发表于 2014-5-30 23:59
可是。。
>>> a=' a'
>>> b=' a'

>>> x = 'x'
>>> y = 'x'
>>> x is y
True
>>> a = 'a'
>>> b = 'a'
>>> a is b
True

这个又是怎么解释?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表