python return返回值在计算机内的存储形式_Python中函数返回值的各种形式,python,多种形式...

3afa297480b43f38552b3146385efb63.png

注意一点就是我们Python的函数return之后,比方说它定义了一个局部变量,当出了这个函数,这个局部变量的引用计数会减1,在C语言当中出了函数作用域的话局部变量是直接被销毁的,而我们Python并没有局部变量这个概念,我们都是引用,所以只要出了作用域,引用就会减1。

那么问题就来了,减1是不是就没了,我们return出来之后是不是就不能访问了?并不是。

在Python的return当中,它会把它再加1,首先它出来,先调return函数给它加了1,它本来引用计数是1,我们return的时候把这个变量re给它加了1,那就变成了2,整个退出的时候它又会减1,此时re的引用计数就是1,在外面还可以访问到这个变量re。

所以你要知道这一点,Python的函数是可以直接返回的,里面的局部变量都可以返回的,这一点不同于C语言。

由于Python内部都是引用,它会把引用计数加1,所以这个return不是那么简单的,你要知道这一点,它在内部为什么能用,它会把引用计数加1。

为什么要说这些呢?当你自己做一个,把C语言的函数传给Python的时候,你要做同样的事情,你是通过Python的接口申请了一块空间,那你一样的要把引用计数加1,不然的话出了这个函数的作用域,这个空间就销毁掉了,所以要把它加1,在外部才能保证访问。

0c45ed246f9a04b05c3feb35c444a5f6.png

能支持return多个值,相当于return了一个元组,可以赋给多个值,并不建议使用这种return方式,可读性会下降,一些新特性能不用尽量不用,但是你要知道这种特性,要能看得懂别人的代码。

1a708655271746f7031c9d71b562bc38.png

cccc9271c1ab570b4999ecc06a5ebc3e.png

在我们局部变量生成的空间,在外部是可以访问的,因为return会把它的引用计数加1。

92b28a25a3171befac428a4199b52cc5.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值