python值传递和引用传递的作用是什么?
作为一种编程语言,Python也有很多变量和类型,正是因为这些特点,它才比较灵活。后面我们在写代码的时候,会遇到各种传参的情况,其中就涉及到值的传递和引用传递,两者虽然差不多,但本质还是有很大区别的。本文介绍了值传递和引用传递的区别,请参阅以下内容:
引用是什么?
例如,我们在变量count中存储一个值。对于引用类型,变量存储实例对象的地址,即指向实例对象,这种类型的变量通常称为引用。
值传递:形参是实参的拷贝,改变形参的值不影响外部实参的值。从被调用函数的角度来看,价值传递是单向的。参数的值只能传入不能传出。当需要在函数内部修改参数并且预计更改不会影响调用者时,使用值传递。
指针传递:形参是指向实参地址的指针。指针对形参进行操作时,相当于对实参本身进行操作。
引用传递:形参相当于实参的“别名”。对形参的运算实际上就是对实参的运算。在按引用传递的过程中,被调用函数的形参也作为局部变量在栈中开辟内存。空间,但是此时存储的是调用函数放入的实参变量的地址。
任何对被调用函数的形参的操作都作为间接寻址处理,即通过栈中存储的地址访问调用函数中的实参变量。因此,被调用函数对形式参数执行的任何操作都会影响调用函数中的实际参数变量。
指针传递和引用传递的应用场景:
修改函数内部的参数,希望修改对调用者有影响。对比指针/引用传递可以将形参的变化“传递”到实参(其实是直接在实参的内存中修改,不像值传递,是将实参的值复制到另一个内存地址来修改)
另一种用法是:当一个函数实际需要返回多个值,但只能显式返回一个值时,可以将需要返回的变量作为指针/引用传递给函数,以便函数修改后返回,调用者可以获得修改后的变量,相当于隐式返回值传递。
相关推荐HOT
更多>>python流式读取大文件的两种方法
python流式读取大文件的两种方法1、使用read方法分块读取使用更底层的file.read()方法,与直接循环迭代文件对象不同,每次调用file.read(chunk_...详情>>
2023-11-14 16:48:08pythongreenlet如何交替运行
pythongreenlet如何交替运行1、greenlet说明greenlet是一个基于Greenlet实现的网络库,它使用greenlet来实现协同程序。其基本思想是,当greenle...详情>>
2023-11-14 14:52:57python收集参数的调用顺序
python收集参数的调用顺序本文教程操作环境:windows7系统、Python3.9.1,DELLG3电脑。1、说明收集参数,关键字参数,普通参数可以混合使用使用...详情>>
2023-11-14 13:23:09python实例属性的优先级分析
python实例属性的优先级分析1、说明当在实例上给类属性赋值时,实际上是给这个实例绑定了同名的属性而已,并不会影响类属性和其他实例。使用实...详情>>
2023-11-14 10:17:33