c++函数传参有三种方式:分别是按值、按引用和按指针传递。简单的说按值传递的方式不会改变传递的参数本身,按引用传递的方式会改变参数本身(当然可以用const限制),按指针传递方式会改变指针指向的对象。那么python有没有这样的特性呢?以下做一些测试:

    1.传递数字类型的变量(python里可能应该叫对象):

    image.png

    从测试代码中可以看到a并没有发生改变,函数中的parm(形参)值发生了改变。也就是说调用函数时参数a只是把值赋给了parm。

    

    2.传递列表类型的变量:

    image.png

    从测试代码中可以看出经过函数调用后,a的值发生了改变。改变后的a和函数里的parm是一样的。可以理解为变量a把自己赋给了parm。


    3.传递字符串类型的变量:

    image.png

    和数字类型一样,传递字符串类型的参数也是按值传递。


    4.传递字典类型的变量:

image.png

    和列表类型一样,传递字典类型的参数是按引用方式传递。


    5.传递元组类型的变量:

    image.png

    在函数中试图改变传进来的元组的值,程序崩溃了。  忘了元组是不能改变它的值的....


    总结:python中变量可以分为可变类型(如列表、字典)和不可变类型(如数字和字符串)。可变类型的变量可以看成是按引用传递,不可变类型的变量可以看成是按值传递。