| 
 | 
 
 
发表于 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等等) 
 
 |   
 
 
 
 |