|
发表于 2022-10-28 15:20:21
|
显示全部楼层
本帖最后由 阿奇_o 于 2022-10-28 15:44 编辑
准确点,不是元组成员,而是 元组本身。
其实这里的关键是:在 IDLE里,它会把 a,b 当做了 一个元组tuple
而IDLE的“回显逻辑”是:
obj+回车 等于 输出repr(obj)即obj.__repr__()的返回 # 这里的obj 就是 元组(a,b)
而print(obj) 始终等于 print(obj.__str__()) 或 print(str(obj)) 。
print(a, b) 则是另一回事了,分别打印两个不同的变量对象了,当然调用的还是对象的__str__,只是最终呈现到屏幕是,都是 520 520
>>>('520', 520)
('520', 520)
>>>('520', 520).__repr__()
"('520', 520)"
>>>('520', 520).__str__()
"('520', 520)"
# 元组的__str__和__repr__方法的返回是一样的(但大多数的其他对象,它们的返回是不一样。不过完全取决于你怎么定义它们)
>>>print(('520', 520).__str__())
('520', 520)
>>>print('520', 520) # 注意区别这两个print内的 参数的不同
520 520
ps: 对于人类人眼,我们通常只看“表像”,只看“符号” 。但对于计算机,为了效率等原因,它需要严格区分0和1,只是为了和人进行交互,它不得不转为我们熟悉的字符串——符号而已,表象而已。。
计算机则要区分由0和1不同进制化形成的数值类型(二进制、十进制、十六进制等),以及 由0和1字节码编码而成的 字符类型(不同的字符集,ascii,gbk,utf8等等)
|
|