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

    python怎么传参数

    silencementsilencement2019-08-16 15:11:03原创2061

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思?

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

    值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。

    引用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的实参变量。

    在python中实际又是怎么样的呢?

    先看一个简单的例子:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    21

    22

    23

    24

    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)

    运行后结果如下:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    >>>

    main before invoke test

    39601564

    test before

    39601564

    test after +

    39601540

    main afterf invoke test

    2

    39601564

    专题推荐:参数传递
    上一篇:什么是Python web框架 下一篇:python的元组怎么用

    相关文章推荐

    • python包是什么

    全部评论我要评论

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

  • 取消发布评论
  • 

    Python学习网