栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python 函数的值传递和引用传递详解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python 函数的值传递和引用传递详解

1.参数类别

形式参数:简称形参,在定义函数时,函数名后面小括号中自定义的参数就是形式参数。
实际参数:简称实参,在调用函数时,函数名后面小括号中传入的参数值就是实际参数。

2.函数中参数传递方式

Python 值传递和引用传递是根据实际参数的类型不同进行区分的,如下所示:
值传递:指的是实参类型为不可变类型(数字、字符串、元组);
引用传递(或叫地址传递):指的是实参类型为可变类型(列表,字典,set 集合,np矩阵,torch.Tensor矩阵)。

值传递和引用传递的区别如下所示: 函数参数进行值传递后,若形参的值发生改变,不会影响实参的值;
函数参数进行引用传递后,若形参的值发生改变,实参的值也会一同改变。

def fun1(num, dict_, list_):
    print('形参ID: ', id(num), id(dict_), id(list_))
    num += 1
    dict_[str(num)] = num
    list_.append(num)


if __name__ == '__main__':
    print()
    num = 1
    a = {}
    b = []
    print('原始ID: ', id(num), id(a), id(b))
    for i in range(5):
        print('实参ID: ', id(num), id(a), id(b))
        print('i:%i,n' % i, '函数执行前 num: ', num, 'a: ', a, 'b: ', b)
        fun1(num, a, b)
        print('函数执行后 num: ', num, 'a: ', a, 'b: ', b, 'n')
        

结果:

原始ID:  140715259541520 2565483473640 2565482238344
实参ID:  140715259541520 2565483473640 2565482238344
i:0,
 函数执行前 num:  1 a:  {} b:  []
形参ID:  140715259541520 2565483473640 2565482238344
函数执行后 num:  1 a:  {'2': 2} b:  [2] 

实参ID:  140715259541520 2565483473640 2565482238344
i:1,
 函数执行前 num:  1 a:  {'2': 2} b:  [2]
形参ID:  140715259541520 2565483473640 2565482238344
函数执行后 num:  1 a:  {'2': 2} b:  [2, 2] 

实参ID:  140715259541520 2565483473640 2565482238344
i:2,
 函数执行前 num:  1 a:  {'2': 2} b:  [2, 2]
形参ID:  140715259541520 2565483473640 2565482238344
函数执行后 num:  1 a:  {'2': 2} b:  [2, 2, 2] 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/725930.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号