找回密码
 立即注册

扫一扫,访问微社区

QQ登录

只需一步,快速开始

123
返回列表 发新帖
楼主: cyrusxu

[求助] python初学者 求助QAQ

0

主题

7

帖子

7

积分

贫民

积分
7
囧小K 发表于 2014-6-6 22:22:14 | 显示全部楼层
回复

使用道具 举报

2

主题

13

帖子

13

积分

贫民

积分
13
cyrusxu  楼主| 发表于 2014-6-7 19:49:59 | 显示全部楼层

那多小算小。。。。
回复 支持 反对

使用道具 举报

2

主题

7

帖子

7

积分

贫民

积分
7
Johnson_wu 发表于 2014-6-9 11:31:01 | 显示全部楼层
测试了一下
>>> l='abcde'
>>> m='abcde'
>>> l is m
True

>>> d='abc a'
>>> e='abc a'
>>> d is e
False

这是为什么?和字符串中间有空格有关系吗?我是2.7的版本
回复 支持 反对

使用道具 举报

0

主题

7

帖子

7

积分

贫民

积分
7
囧小K 发表于 2014-6-9 22:18:02 | 显示全部楼层
当你定义一个短字符串时,python内部暂时存储并重复使用短字符串作为最佳化,而上述'abc a'不在python认为的短字符串范围内。可以用id(l) ,id(m)查看内存地址,看是否是同一对象
回复 支持 反对

使用道具 举报

0

主题

7

帖子

7

积分

贫民

积分
7
囧小K 发表于 2014-6-9 22:19:20 | 显示全部楼层
至于具体python怎么去判定需不需要缓存机制,要问专家了:lol
回复 支持 反对

使用道具 举报

11

主题

35

帖子

35

积分

贫民

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

谢楼主提出这个问题,我原来一直都没发现。
搜了一下,跟ping0205说的是一个意思,小的变量是被缓存的,所以有的时候id()是一样的。
回复 支持 反对

使用道具 举报

0

主题

8

帖子

8

积分

贫民

积分
8
齐凡 发表于 2016-9-10 20:14:26 | 显示全部楼层
x ='abc a'
y ='abc a'
print x is y
为什么我这段代码运行出来的结果是True呢?
回复 支持 反对

使用道具 举报

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

本版积分规则

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