一点关于Python与C++引用不同的理解

本文探讨了Python与C++中引用的概念差异。作者在编写二叉树代码时混淆了两者,指出Python的引用在修改值时会指向新内存,而C++的引用则直接在原有内存上修改。此外,还提到了Python中的内存管理,如字符串和数字的缓存,以及可变和不可变对象的区别。

本篇的主要内容:

  • Python与C++引用的不同(个人理解)

在用Python写建二叉树的代码的时候遇到了这个问题,原因就是把Python的“引用”与C++的“引用”搞混了,这两种语言中都有“引用”名词,虽然大部分时候很像,其实还是有区别的。这里记录一下,注意,这里只是我自己的一点个人理解,在找到更好的理解之前,先这样理解吧!

例子,这是我的两段根据先序序列创建二叉树的代码:

# 正确
pos = 0
def create(seq):
    global pos
    ch = seq[pos]
    pos += 1
    if ch == '#':
        return None
    else:
        temp = TreeNode(ch)
        temp.left = create(seq)
        temp.right = create(seq)
        return temp
 
seq = "abd###ce###"
root = create(seq)

还有这个:

# 错误
def create(root):
    global pos
    if(seq[pos]=='#'):
        root = None
        pos += 1
        return
    root = TreeNode(seq[pos])
    pos += 1
    root.left = None
    root.right = None
    create(root.left)
    create(root.right)

看起来只是有无返回值的区别,实际上第二段代码是错误的,其实从第二段代码的思路来说,在C++里面可以这样写:

void create(tree & t){
    char ch = st
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值