首页 > 试题广场 >

a与b定义如下,下列哪个选项是正确的? a = '123'

[单选题]
a与b定义如下,下列哪个选项是正确的?
a = '123'
b = '123'
  • a != b
  • a is b
  • a == 123
  • a + b = 246
a,b为字符串不可变类型,所以指向相同地址,所以  a is b
is指地址相同
==内容相同
===内容和格式相同
a+b=‘123123’
错选a==123,字符和int不相同

发表于 2018-03-11 20:54:31 回复(12)

Python中的对象包含三要素:id、type、value

其中id用来唯一标识一个对象,type标识对象的类型,value是对象的值


is判断的是a对象是否就是b对象,是通过id来判断的
在这里,a,b为字符串不可变类型,所以指向相同地址,所以  a is b
==判断的是a对象的是否和b对象的相等,是通过value来判断的
发表于 2018-03-20 18:15:32 回复(2)
看到很多评论说的是a,b为字符串不可变类型,指向相同地址,所以  a is b 这种说法其实是不对的。这和小数据池有关。如果用python自带的解释器将a,b定义一个超出小数据池的元素例如a = 2777,b=2777,print(a is b) 即会返回False;用pycharm 会返回True这是pycharm本身给优化了。

发表于 2018-12-13 17:19:34 回复(9)
不可变类型,指向相同地址。可变类型(list),地址不同。
is 指地址相同
==指内容相同
>>> a = [1,2,3]
>>> b = [1,2,3]
>>> a is b
False
>>> a == b
True
>>> 

发表于 2018-05-26 10:38:13 回复(0)
共享字符串字面量是一种优化措施,称为驻留。CPython还会在小的整数上用这个优化措施,防止重复创建“热门”数字。注意,CPython不会驻留所有字符串和整数。
发表于 2019-02-26 23:39:51 回复(0)
不可变对象指向同一对象
发表于 2018-03-06 10:55:22 回复(0)
在Python中,String是不变对象,所以a = '123'和b = '123'都指向同一个'123'。
所以a is b和a == b都为True。
此外注意题目,一个是'123'(字符串),一个是123(数字)。
编辑于 2019-03-19 13:12:19 回复(2)
很多人都弄错了,这是因为python的字符串驻留技术,像这种常量字符串可能会被反复使用,类似的还有整数
发表于 2019-08-14 01:18:18 回复(0)
只有数值型和字符串型的情况下,a is b才为True,当a和b是tuple,list,dict或set型时,a is b为False
发表于 2018-07-16 17:27:14 回复(2)
python中的对象包含三要素:id  type  value
id:用来标识唯一的一个对象,type标识对象的类型,value是对象的值
对于不可变类型,指向相同地址 id 相同
对于可变类型,指向不同地址 id不同
发表于 2019-09-07 15:57:13 回复(0)
只有数值型和字符串型的情况下,a is b才为True,当a和b是tuple,list,dict或set型时,a is b为False。
发表于 2019-09-02 22:09:35 回复(0)

同一个代码块:数据缓存机制

不同代码块:小数据池驻留机制

提高效率,节约内存

编辑于 2019-08-25 00:35:39 回复(0)
is是比较id(),即内存地址,==比较的是值。
在Python中“=”是代表引用,a='123',在Python中是先在内存中生成了字符串'123',然后再贴上a标签,b='123',因为字符串在变量中不可变,所以Python从节约内存上,直接又把内存中已有的'123'又贴了一个标签b,所以a,b都是引用的'123',他们的id()相同,并且值也相等。
错选C,python中整形和字符串不相等。
有不对的,欢迎大家指出,一起进步!
发表于 2019-02-18 20:52:35 回复(0)
python3中
>>> a="2018世界杯开赛在即"
>>> b="123"
>>> a is b
False
>>> a="123"
>>> b="123"
>>> a is b
True
>>> a="文字帖"
>>> b="123"
>>> a is b
False
>>> a="文字帖"
>>> b="全中文"
>>> a is b
False
>>> 

发表于 2018-07-31 15:04:26 回复(0)
这题是因为a和b的长度比较短,如果把字符串改成"2018世界杯开赛在即",a就不是b了
发表于 2018-06-14 09:17:46 回复(2)
b
发表于 2018-03-04 08:54:27 回复(1)
a==b  同时 a is b
发表于 2019-03-22 09:21:06 回复(0)
a,b为字符串不可变类型,所以指向相同地址,所以  a is b
is指地址相同
==内容相同
===内容和格式相同
a+b=‘123123’
错选a==123,字符和int不相同
发表于 2019-02-19 10:49:51 回复(0)
a is b表示指向相同地址。
发表于 2023-07-12 21:31:21 回复(0)
a,b为字符串不可变类型,所以指向相同地址,所以 a is b  is指地址相同  ==内容相同  ===内容和格式相同  a+b=‘123123’  错选a==123,字符和int不相同
发表于 2023-04-05 04:18:26 回复(0)