首页 > 编程语言 >C++ 和 Python 的赋值操作 (等号“=“) 的区别

C++ 和 Python 的赋值操作 (等号“=“) 的区别

时间:2022-10-06 11:46:35浏览次数:58  
标签:Python 默认 引用 操作 拷贝 赋值 C++

C++ 和 Python 的赋值操作("=")的区别
C++ 的赋值操作总是默认执行拷贝
拷贝出来的副本与原来变量的地址不同
除非是指针拷贝给指针的浅拷贝才会指向相同地址
auto a = b; 改变b之后并不会改变a
Python赋值分两种情况,对于a = b,
可变类型的赋值默认使用引用方式(可变类型包括列表、字典、自定义类等;a和b指向相同内存,改变b之后a也会跟着改变)
不可变类型的赋值默认使用拷贝方式(不可变类型包括字面值, tuple等;a和b地址不同,b的改变不影响a)
关于两者区别的思考
Python的等号操作,对于可变类型,默认以引用方式赋值,主要原因应该在于节省时空开销,
可变类型如列表、字典、数组、自定义类等,其占用内存空间有可能非常大,如果非要拷贝到新地址中,内存空间需要新开辟一份,且拷贝操作也需要花时间,在大数据量的情况下时间和空间开销都可能非常大;
引用方式则可以节省掉上述的开辟新空间以及拷贝操作。把默认方式设置为合理高效的方式,可以节省人类精力,使人机交互更加方便
引用计数器记录一个对象被引用多少次,直到引用次数为0则销毁该对象,节省内存
非要copy的话,可以用a = copy.deepcopy(b)
C++ 的等号操作,默认拷贝赋值,原因可能在于C++是相对底层一些的语言,需要靠开发者来发挥操作自由度, 根据实际情况设计对应的高效合理的方式
想要用引用的方式来避免拷贝的话,可以用"&"符号,比如 auto& a = b;
————————————————
版权声明:本文为CSDN博主「莫翰轩 MoDonald」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_43414513/article/details/121591086

标签:Python,默认,引用,操作,拷贝,赋值,C++
From: https://www.cnblogs.com/chentianyu/p/16757302.html

相关文章

  • python 疫情监控系统
    ​随着新型冠状病毒肺炎(CoronaVirusDisease2019,COV⁃ID-19,简称“新冠肺炎”)的爆发,在当今世界格局愈发“地球村”的背景下,受疫情影响,对人们的正常生活和全球经济形成一......
  • 了解Python
    文章目录前言一、Python是什么?二、如何学习Python1.先学习其构架,再探究细节2.夯实基础,方有进阶之路三、结语 前言如何学习编写第一个程序,我相信每一......
  • python记录日志神器- loguru库
    写了这么多年的Python,我一直都是使用Python自带的logging模块来记录日志,每次需要写一些配置将日志输出到不同的位置,设置不同日志输出格式,或者将日志进行分文件和压缩......
  • Python基础(十一) | 超详细的Pandas库三万字总结
    ⭐本专栏旨在对Python的基础语法进行详解,精炼地总结语法中的重点,详解难点,面向零基础及入门的学习者,通过专栏的学习可以熟练掌握python编程,同时为后续的数据分析,机器学习及深......
  • python+selenium做ui自动化测试用法必会
    python+selenium做ui自动化测试用法必会一、前言大家都知道,基于Web端的测试的基础框架是需要Selenium做主要支撑的,这里边给大家介绍下Web测试核心之基于Python的Sele......
  • python一些函数库的安装
    python中如何安装libxml2?https://www.codenong.com/cs106853136/注意不是:pipinstalllibxml2而是pipinstalllxml 顺带了解其他python工具https://www.osgeo.cn/......
  • Python的一些日常高频写法,建议收藏备用!
    一、数字1求绝对值绝对值或复数的模In[1]:abs(-6)Out[1]:62进制转化十进制转换为二进制:In[2]:bin(10)Out[2]:'0b1010'十进制转换为八进制:In[3]:oct......
  • python中集合的常用方法和应用场景
    1.集合的常用方法集合:无序的数据类型添加顺序和在集合中的存储顺序是不一样的1.增加增加一个元素.add()s={6,7,8,9}s.add(1)print(s)打印结果{1,6,7,8,9}增......
  • python中的decimal类型转换实例详解
    1.Decimal类型的优点Decimal类型是在浮点类型的基础上设计的,但是它在几个地方上要优于floatingpoint:1)Decimal类型可以非常精确地在计算机中存储,而学过c++的都知道,浮点......
  • python判断字符串,str函数isdigit、isdecimal、isnumeric的区别
    原始链接:https://www.cnblogs.com/guigujun/p/6133057.htmlpython判断字符串,str函数isdigit、isdecimal、isnumeric的区别s为字符串s.isalnum()所有字符都是数字或者字......