Python 函数的值传递和引用传递详解 [Python Function][Python 值传递][Python 引用传递][Python 形式参数(形参)][Python 实际参数(实参)]

您的“关注”和“点赞”,是信任,是认可,是支持,是动力…

如意见相佐,可留言。
本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新。

1 Python 实际参数和形式参数

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

举例如下所示:

# 在定义函数时,函数名后面小括号中自定义的参数就是形式参数。
def info(name, age, gender):  # name、age、gender 三个形式参数
    print('姓名:', name, ';年龄:', age, ';性别:', gender)


# 在调用函数时,函数名后面小括号中传入的参数值就是实际参数。
info('码农阿杰', '18', '男')  # 传入的 '码农阿杰', '18', '男',为三个实际参数

运行结果:

姓名: 码农阿杰 ;年龄: 18 ;性别: 男

2 Python 值传递和引用传递

2.1 值传递和引用传递概述

Python 值传递和引用传递是根据实际参数的类型不同进行区分的,如下所示:

  • 值传递:指的是实参类型为不可变类型(数字、字符串、元组);
  • 引用传递(或叫地址传递):指的是实参类型为可变类型(列表,字典,set 集合)。

2.2 值传递和引用传递的区别

值传递和引用传递的区别如下所示:

  • 函数参数进行值传递后,若形参的值发生改变,不会影响实参的值;
  • 函数参数进行引用传递后,若形参的值发生改变,实参的值也会一同改变。

举例如下所示:

def sum(num):
    num += num  # 改变形参值
    print('形参值为:', num)


print('---- 值传递 ----')
str_demo = '阿杰'  # 传入字符串,代表值传递
print('str_demo的值为:', str_demo)
sum(str_demo)
print('实参值为:', str_demo)


print('---- 引用传递 ----')
list_demo = [1, 2, 3]  # 传入列表,代表引用传递
print('list_demo的值为:', list_demo)
sum(list_demo)
print('实参值为:', list_demo)

运行结果:

---- 值传递 ----
str_demo的值为: 阿杰
形参值为: 阿杰阿杰
实参值为: 阿杰
---- 引用传递 ----
list_demo的值为: [1, 2, 3]
形参值为: [1, 2, 3, 1, 2, 3]
实参值为: [1, 2, 3, 1, 2, 3]

【友情链接】

微信公众号:码农阿杰

博客园

【参考资料】

Python 官网

Python 3.8.2 documentation

猜你喜欢

转载自blog.csdn.net/manongajie/article/details/105934684