学习内容:
深入理解左值和右值 - 知乎 (zhihu.com)
https://blog.csdn.net/li_man_man_man/article/details/121511423
https://www.zhihu.com/question/480430938
左值:大部分时候在左边。也可以将左值赋给左值(左值=左值),左值不一定能被赋值(const左值不能,赋值应该是可修改的,=不一定是赋值操作,也可能是初始化操作)。
纯左值:变量名,前置自加自减 ++a,成员访问 . 的结果,下标运算符 [] 的结果(如my_list[0]),指针访问成员运算符 -> 的结果,解引用表达式*ptr,字符串字面值。
右值:大部分时候在右边。是一个临时值,其他位置无法访问这个值,通常情况下在语句执行完成后右值就被丢弃。
纯右值:除字符串字面值以外的字面值(如a,True,列表字面值[1, 2]),后置自增自减 a++,算数表达式,逻辑表达式,比较表达式,取地址表达式,lambda表达式。
注意:左值和右值的数量必须匹配。如果左值的数量与右值的数量不匹配,将会引发 ValueError
。
例子: