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
 

mutable-immutable-object.jpg

 

参考

https://foofish.net/python-function-args.html

http://winterttr.me/2015/10/24/python-passing-arguments-as-value-or-reference/

posted @ 2019-07-25 12:00  bH1pJ  阅读(28)  评论(0编辑  收藏  举报