码迷,mamicode.com
首页 > 编程语言 > 详细

python---参数传递

时间:2020-05-30 23:27:25      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:方式   方法   赋值   数据结构   引用   必须   通过   保存   资源   

引入

  1、写程序时容易发生的一类错误 ——  传参过程中,数据结构发生了改变,但没有注意到。

     所以就涉及到了可变对象  和  不可变对象 ,参数传递 是 传递值 还是 传递引用

  2、Python 里所有的数据类型都是对象

 

值传递与引用传递:

  值传递:就是拷贝参数自身所存储的值,将其传递给函数里的新变量 ,原变量和新变量之间 互不影响

  引用传递:把参数自身的地址(引用)传递给新的变量, 新变量发生改变,将会引起原来变量的值一同改变

 

python中参数的传递:

  python参数里存储的是另一个对象的引用,所以既不是值传递,也不是引用传递,而是赋值传递(pass by assignment),或者是叫对象的引用传递(pass by object reference)。用白话说就是,我把我存储的另外一个对象的引用,传递给你。

 

必须要注意的是:

  python中赋值(或这说是对象的引用)传递,不是指向一个具体的内存地址,而是指向一个具体的对象。

  如果对象是可变的,当其改变时,所有指向这个对象的变量都会改变。如果对象不可变,简单的赋值只能改变其中一个变量的值,其余变量则不受影响。

 

通过一个函数来改变某个变量的值,通常有两种方法:

  直接将可变数据类型(比如列表,字典,集合)当作参数传入,直接在其上修改

  在函数内另外创建一个新变量,保存修改后的值,然后通过return将其返回给原变量。这种方式更好一些,可以避免同时对同一资源的修改,避免静态条件引起的问题

创建一个新变量,来保存修改后的值,然后将其返回给原变量

  

如果对象是可变的,当其改变时,所有指向这个对象的变量都会改变

del 关键字:

  del 只能删除一个变量,但是并不能删除任何对象(del引起的结果是,指向该对象的变量减少一个)

python---参数传递

标签:方式   方法   赋值   数据结构   引用   必须   通过   保存   资源   

原文地址:https://www.cnblogs.com/wl413911/p/12995575.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!