python传参时避免参数改变

本文探讨了Python中参数传递的特性,重点在于可变类型(如list)和不可变类型(如tuple)的区别。通过两个示例展示了如何在递归操作中避免直接修改原始参数。第一种方法是对list使用切片操作v[:],以创建副本进行修改。第二种方法是将tuple转换为list,然后修改后再转回tuple,以保护原始数据不变。这两种方法对于理解Python参数传递机制至关重要。
摘要由CSDN通过智能技术生成
import os
import collections
import math
import sys

# 我们知道,用python写递归,在进行传参时,不像C++,参数的传递是值传递的时候,并不改变参数实际的值;只有使用引用传递时,才会改变参数,
# 但是在Python中,参数的传递是分为可变类型和不可变类型的,比如list就是可变类型,tuple就是不可变类型,下面就介绍一下两种方法来避免参数的改变。
# 第一种就是使用如下面v[:]来对list进行操作
"""
def main(v, cnt):
    if cnt == 5:
        v.append(cnt)
        print(v)
        return
    v.append(cnt)
    main(v[:], cnt+1)
    print(v)
    return
"""

"""
v = [1, 2, 3]
main(v[:], 4)
"""

# 第二种就是传参数的时候使用tuple,在函数里面,把tuple变为list,可进行修改。
"""def main(v, cnt):
    if cnt == 5:
        tmp = list(v)
        tmp.append(cnt)
        print(tmp)
        return
    tmp=list(v)
    tmp.append(cnt)
    main(tuple(tmp), cnt+1)
    print(tmp)
    return

v=[1,2,3]
main(tuple(v),4)"""


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

eeemmm123

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值