python传值和传引用的区别实例

# -*- coding: utf-8 -*-

# 测试拷贝
class TestCopy(object):
    # 测试函数1
    def testFunc1(self, xList, y):
        y = 1
        xList.append(5)
        print("② testFunc1打印地址:", id(xList))
        print("② testFunc1打印地址:", id(y))

# 主函数
if __name__ == "__main__":
    print("▼ 测试传值和传引用操作 ▼")
    testCell = TestCopy()
    xList = [1, 2, 3, 4]
    y = 0
    print("① 执行函数前:")
    print("① 打印xList值:", xList)
    print("① 打印y值:", y)
    print("① 打印xList地址:", id(xList))
    print("① 打印y地址:", id(y))
    testCell.testFunc1(xList, y)
    print("③ 执行函数后:")
    print("③ 打印xList值:", xList)
    print("③ 打印y值:", y)
    print("③ 打印xList地址:", id(xList))
    print("③ 打印y地址:", id(y))

控制台输出:


```bash
▼ 测试传值和传引用操作 ▼
① 执行函数前:
① 打印xList值: [1, 2, 3, 4]
① 打印y值: 0
① 打印xList地址: 1771697231688
① 打印y地址: 140712265543904
② testFunc1打印地址: 1771697231688
② testFunc1打印地址: 140712265543936
③ 执行函数后:
③ 打印xList值: [1, 2, 3, 4, 5]
③ 打印y值: 0
③ 打印xList地址: 1771697231688
③ 打印y地址: 140712265543904

说明:id(y)可以获取y的地址

1、传值方式

在这里插入图片描述
在这里插入图片描述说明常规类型的变量y是使用传值方式,调用函数y的值和调用函数后y的值没有发生改变。y只是将值传给testFunc1函数,函数内的y其实是另一个地址的变量,所以testFunc1函数内部对y的修改不会影响main函数中y变量的值。

2、传引用方式

在这里插入图片描述
在这里插入图片描述
说明列表类型的变量xList是使用传引用方式,xList将地址传给testFunc1函数,testFunc1函数的xList其实和main函数的xList是同一个变量,所以testFunc1函数内部对xList的修改会影响main函数中xList变量的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值