• 技术文章 >常见问题 >Python常见问题

    python如何接受参数

    silencementsilencement2019-11-20 09:16:02原创2164

    函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。

    值传递(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怎么运行dir 下一篇:终端如何退出python

    相关文章推荐

    • python如何输入参数个数• python如何传入不定长参数• python的函数输入两个参数吗• Python函数的参数有几种

    全部评论我要评论

    © 2021 Python学习网 苏ICP备2021003149号-1

  • 取消发布评论
  • 

    Python学习网