Q-Logo 我的学习笔记分享

Entries for tag "ke-bian-dui-xiang"

理解Python的参数传递、变量赋值及可变对象和不可变对象

Python的参数传递,既非按值传递(call-by-value),也非按引用传递(call-by-reference),而是按对象引用传递(call-by-object-reference)或者说按赋值传递(call-by-assignment)。

Python中的赋值可理解为将“变量名”与对象进行绑定。

  • “变量名”并不是对象本身,只是通过赋值与对象进行了绑定,赋值完成后,就可以通过“变量名”来引用对象。
  • 每个“变量名”到对象的绑定有其作用域。

在Python中, list, dict, set 等类型的对象是可变对象,而 str, int, tuple等类型的对象是不可变对象。

  • 对于可变对象,可以通过一些特定操作,“就地”改变其内容,内容改变后,所有引用该可变对象的变量,都会看到此变化
  • 对于不可变对象,任何操作都不能“就地”改变其内容,而只能将内容进行变换生成新的内容,返回新的对象