当前位置 博文首页 > fearlazy:python3基础之函数参数的传递方式
?
c++函数传参有三种方式:分别是按值、按引用和按指针传递。简单的说按值传递的方式不会改变传递的参数本身,按引用传递的方式会改变参数本身(当然可以用const限制),按指针传递方式会改变指针指向的对象。那么python有没有这样的特性呢?以下做一些测试:
????1.传递数字类型的变量(python里可能应该叫对象):
????
????从测试代码中可以看到a并没有发生改变,函数中的parm(形参)值发生了改变。也就是说调用函数时参数a只是把值赋给了parm。
????
????2.传递列表类型的变量:
????
????从测试代码中可以看出经过函数调用后,a的值发生了改变。改变后的a和函数里的parm是一样的。可以理解为变量a把自己赋给了parm。
?
????3.传递字符串类型的变量:
????
????和数字类型一样,传递字符串类型的参数也是按值传递。
?
????4.传递字典类型的变量:
????和列表类型一样,传递字典类型的参数是按引用方式传递。
?
????5.传递元组类型的变量:
????
? ? 在函数中试图改变传进来的元组的值,程序崩溃了。? 忘了元组是不能改变它的值的....
?
????总结:python中变量可以分为可变类型(如列表、字典)和不可变类型(如数字和字符串)。可变类型的变量可以看成是按引用传递,不可变类型的变量可以看成是按值传递。