函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。
值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。
python学习网,大量的免费python学习视频,欢迎在线学习!
引用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。
在python中实际又是怎么样的呢?
先看一个简单的例子:
from ctypes import * import os.path import sys def test(c): print "test before " print id(c) c+=2 print "test after +" print id(c) return c def printIt(t): for i in range(len(t)): print t[i] if __name__=="__main__": a=2 print "main before invoke test" print id(a) n=test(a) print "main afterf invoke test" print a print id(a)
运行后结果如下:
>>> main before invoke test 39601564 test before 39601564 test after + 39601540 main afterf invoke test 2 39601564
当前题目:创新互联Python教程:python如何接受参数
本文链接:http://www.csdahua.cn/qtweb/news19/343919.html
网站建设、网络推广公司-快上网,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 快上网