python函数参数传递
总结的问题链:
1.python函数传递的是值?还是变量的引用?
2. Python 中变量与对象之间的关系。
引用:Python 中一切皆为对象,数字是对象,列表是对象,函数也是对象,任何东西都是对象。而变量是对象的一个引用(又称为名字或者标签),对象的操作都是通过引用来完成的。例如,[]
是一个空列表对象,变量 a
是该对象的一个引用。
在 Python 中,「变量」更准确叫法是「名字」,赋值操作 =
就是把一个名字绑定到一个对象上。就像给对象添加一个标签。
Python 函数中,参数的传递本质上是一种赋值操作,而赋值操作是一种名字到对象的绑定过程。
最后,回到问题本身,究竟是是传值还是传引用呢?说传值或者传引用都不准确。非要安一个确切的叫法的话,叫传对象(call by object)。
3.什么是可更改对象和不可更改对象
参考http://winterttr.me/2015/10/24/python-passing-arguments-as-value-or-reference/
引用:|
可更改(mutable)对象与不可更改(immutable)对象
strings, tuples, 和numbers是不可更改的对象,而list,dict等则是可以修改的对象。
可更改vs不可更改
nfoo = 1
nfoo = 2
lstFoo = [1]
lstFoo[0] = 2
参考
https://foofish.net/python-function-args.html
http://winterttr.me/2015/10/24/python-passing-arguments-as-value-or-reference/