For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习python编程开发等达内IT培训课程,今天太原达内培训就给大家简单介绍一下,python编程引用用法分享。
一、什么是指针?为什么需要指针?
指针有两重含义:
(1)指代某种数据类型的指针类型,如整形指针类型、指针指针类型
(2)指代一类存放有内存地址的变量,即指针变量
指针的这两重含义是紧密联系的:作为一种变量,通过指针可以获取某个内存地址,从而为访问此地址上的值做好了准备;作为一种类型,其决定了内存地址的正确偏移长度,其应等于当前类型的单位内存大小。
如果一个指针缺少指针类型,即void*,则显然,其虽然保存了内存地址,但这仅仅是一个起点地址,指针会因为无法获知从起点向后进行的偏移量,从而拒绝解指针操作;而如果一个指针缺少地址,即nullptr,则其根本无法读取特定位置的内存。
指针存在的意义主要有以下几点:
承载通过malloc、new、allocator等获取的动态内存
使得pass-by-pointer成为可能
pass-by-pointer的好处包括但不限于:
避免对实参无意义的值拷贝,大幅提高效率
使得对某个变量的修改能力不局限于变量自身的作用域
使得swap、移动构造函数、移动赋值运算等操作可以仅针对数据结构内部的指针进行操作,从而避免了对临时对象、移后源等对象的整体内存操作
由此可见,与指针相关的各操作对于编程而言都是必须的或十分重要的。
二、Python中的引用
Python不存在引用
由上文讨论可知,虽然“引用”对于Python而言是一个非常常用的术语,但这显然是不准确的——由于Python不存在对左/右值的绑定操作,故不存在左值引用,更不存在右值引用。
Python的指针操作
不难发现,虽然Python没有引用,但其变量的行为和指针的行为具有高度的相似性,这主要体现在以下方面:
在任何情况下(包括赋值、实参传递等)均不存在显式值拷贝,当此种情况发生时,只增加了一次引用计数
变量可以进行重绑定(对应于一个不含顶层const(top-levelconst)的指针)
在某些情况下(下文将对此问题进行详细讨论),可通过函数实参修改原值
由此可见,Python变量更类似于(某种残缺的)指针变量,而不是引用变量。
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。