关于文中和笔记区对 _ 变量的讨论,个人测试了做出了一点总结:
系统自动把上一表达式结果赋值给变量 _ ,对于用户来说,这是一个''只读变量''。而用户可以自己手动创建新的 _ 变量,一旦出现了新的 _ 变量,系统就会优先引用这个新变量。新变量的值不会自动更新,而只读变量 _ 会持续更新,但不会被引用,除非用户删除了自建的 _ 变量。
>>> t=1
>>> p=2
>>> t+p
3
>>> _+1 # 系统将上一表达式结果 3 赋值给变量 _ ,3+1=4
4
>>> _+1 # 系统将上一表达式结果 4 赋值给变量 _ ,4+1=5
5
>>> _=10 # 系统将上一表达式结果 5 赋值给变量 _ ,同时用户手动创建变量 _=10
>>> _+1 # 优先引用用户变量(10),10+1=11,同时系统将11这个值赋给只读变量 _
11
>>> _+1 # 优先引用用户变量(10),10+1=11,同时系统将11这个值赋给只读变量 _
11
>>>del _ # 删除用户变量(10)
>>> _+1 # 此时只有只读变量 _ ,值为11,11+1=12
12
对于上述提及的两个变量同名,个人没看源码,只能猜测:两个变量在底层是不同的,但标识并不是用户透明的,所以只能看见都是 _