参考:https://www.cnblogs.com/andywenzhi/p/7453374.html?tdsourcetag=s_pcqq_aiomsg(写的蛮好)

python中的赋值操作“=”和C++中的赋值操作"="还是有很大区别的,这点需要注意!

比如例1:

C++和python操作后会得到同样结果,但是两者在PC中的操作其实不同;

(1)python:代码在内存中的操作示意图:

首先内存会为3创建一个数据单元,再让b指向这个单元;然后b+5得到8,内存又会为这个8创建一个数据单元,再让b指向这个单元(b指向的内存地址发生了改变!);

(2)C++:代码在内存中的操作示意图:

首先内存会创建一个int类,并分配对应的数据单元,类名为b,b类中存储数据3,然后b+3则对b类中的数据3加5变成8(b指向的内存地址没有发生改变!

由上可知:

(1)C++通过操作内存地址而间接操作数据,数据处于被动地位;Python则是直接操控数据,数据处于主动地位,变量只是作为一种引用的关系存在,而不再拥有存储的功能;

(2)可以简单地认为“数据在python中被称为对象(object)”,对象不能被覆盖,也不能被直接销毁(python中有垃圾回收机制来回收不用地对象,比如引用计数机制);

了解了上面,再说一个例子就好理解了,见下面:

这里要注意:对象分为可变对象(单个元素)和不可变对象(集合:list、tuple、dict等),所以会有上面地输出信息;

python中的赋值操作的更多相关文章

  1. python中的赋值操作和复制操作

    之前一直写C#,变量之间赋值相当于拷贝,修改拷贝变量不会改变原来的值.但是在python中发现赋值操作本质是和C++中的引用类似,即指向同一块内存空间.下面通过一个例子说明: p=[0,1,2,3,4 ...

  2. python中的赋值操作与C语言中的赋值操作中的巨大差别

    首先让我们来看一个简单的C程序: a = ; b = a; b = ; printf("a = %d, b = %d\n", a, b); 相信只要学过C语言, 不用运行程序便能知 ...

  3. 【转】Python中的赋值、浅拷贝、深拷贝介绍

    这篇文章主要介绍了Python中的赋值.浅拷贝.深拷贝介绍,Python中也分为简单赋值.浅拷贝.深拷贝这几种"拷贝"方式,需要的朋友可以参考下   和很多语言一样,Python中 ...

  4. python中的“赋值与深浅拷贝”

    Python中,赋值与拷贝(深/浅拷贝)之间是有差异的,这主要源于数据在内存中的存放问题,本文将对此加以探讨. 1 赋值(添加名字) 赋值不会改变内存中数据存放状态,比如在内存中存在一个名为data的 ...

  5. python中的日志操作和发送邮件

    1.python中的日志操作 安装log模块:pip install nnlog 参数:my_log = nnlog.Logger('server_log.log',level='debug',bac ...

  6. Python中的赋值和拷贝

    赋值 在python中,赋值就是建立一个对象的引用,而不是将对象存储为另一个副本.比如: >>> a=[1,2,3] >>> b=a >>> c= ...

  7. python中OS模块操作文件和目录

    在python中执行和操作目录和文件的操作是通过内置的python OS模块封装的函数实现的. 首先导入模块,并查看操作系统的类型: >>> import os os.name # ...

  8. Python中的字符串操作总结(Python3.6.1版本)

    Python中的字符串操作(Python3.6.1版本) (1)切片操作: str1="hello world!" str1[1:3] <=> 'el'(左闭右开:即是 ...

  9. Python中的json操作

    Python中的json操作 标签(空格分隔): python 编码 json 字符串前缀问题 字符串前缀可以有r,u r:表示原始(raw)字符串,比如'\n'不会被转义.常用于正则. u:表示un ...

随机推荐

  1. 迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库。

    Swifter.Json 这是迄今为止 .Net 平台功能最强大,性能最佳的 JSON 序列化和反序列化库. Github : https://github.com/Dogwei/Swifter.Js ...

  2. 使用 xUnit 编写 ASP.NET Core 单元测试

    还记得 .NET Framework 的 ASP.NET WebForm 吗?那个年代如果要在 Web 层做单元测试简直就是灾难啊..NET Core 吸取教训,在设计上考虑到了可测试性,就连 ASP ...

  3. VSCode 必装的 10 个高效开发插件

    本文介绍了目前前端开发最受欢迎的开发工具 VSCode 必装的 10 个开发插件,用于大大提高软件开发的效率. VSCode 的基本使用可以参考我的原创视频教程「VSCode 高效开发必装插件」. V ...

  4. c++ fmt 库安装和使用示例

    安装: 1 git clone  https://github.com/fmtlib/fmt.git 2. cmake . 3. make && make install  #incl ...

  5. 家庭记账本小程序之增(java web基础版三)

    实现新增消费账单 1.main_left.jsp中该部分,调用add.jsp 2. add.jsp,提交到Servlet的add方法 <%@ page language="java&q ...

  6. Linux scp sudo

    command line - scp to remote server with sudo - Super Userhttps://superuser.com/questions/138893/scp ...

  7. 如何在Eclipse中Debug调试Java代码

    背景 有的时候你想debug调试Java的源代码,就想试图在Java源代码中设置断点,在Eclipse中常常会出现Unable to insert breakpoint Absent Line Num ...

  8. [模板] CDQ分治&&BZOJ3262:陌上花开

    简介 CDQ分治是分治的一种, 可以看做归并排序的扩展, 利用离线将一些 \(O(n)\) 的暴力优化到 \(O(log n)\). 它可以用来顶替一些高级(log)数据结构等. 一般地, CDQ分治 ...

  9. vue2.0用组件实现选项卡

    HTML JavaScript 使用 $emit(eventName) 触发事件,在组件内部绑定点击事件,每个独立组件之间发生点击事件触发外层函数,实现选项卡功能

  10. magento 2 Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.%

    Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on h ...