官方解析:
在 Python 中,字符串是不可变对象,当我们创建两个内容相同的字符串字面量时,为了节省内存,Python 解释器会让它们指向同一个对象。这就是字符串驻留(string interning)机制。
因此当 a 和 b 都被赋值为字符串 '123' 时,它们实际上指向内存中的同一个字符串对象。is 运算符用于判断两个变量是否指向同一个对象,所以 a is b 返回 True。这使得 B 选项正确。
分析其他选项:
A 错误: a != b 判断两个字符串是否不相等,由于 a 和 b 的值都是 '123',所以它们是相等的,a != b 会返回 False。
C 错误: a == 123 比较字符串和整数,这是不同类型的比较,结果为 False。字符串 '123' 不等于整数 123。
D 错误: 表达式 a + b = 246 有两个问题:
1. Python 中赋值语句左边不能是表达式
2. 字符串相加是拼接操作,a + b 的结果应该是 '123123' 而不是 246
补充说明:虽然本题 a is b 为 True,但在实际编程中判断字符串相等推荐使用 == 运算符,因为字符串驻留机制的行为在不同 Python 实现中可能有所不同。