Python中,我们令一个变量等于另外一个变量时,并不是把值传递给它,而是直接把指向的地址更改了。我们想要查看一个变量在内存中的地址,可以通过id(变量) 来查看。我们通过一个小例子来看看这个有趣的过程。

>>> x = 12
>>> y= 13
>>> id(x)
1865402384
>>> id(y)
1865402416
>>> x = y
>>> id(x)
1865402416
>>> id(y)
1865402416

首先给x变量赋值为12,y变量赋值为13,我们用id(变量)分别查看x和y在内存中的位置。上面显示分别为1865402384和1865402416。然后我们令x = y后,再查看一下它们在内存中的位置,发现x 和 y都指向了1865402416。由此可见,在python中,我们赋值的方式和C语言有所不同,c语言直接更改x那块内存里面的值,而Python直接改变x的指向,这让我想起了指针。

我们接着尝试一下,继续在这里输入下面的代码

>>> y = 12
>>> id(y)
1865402384

天!发生了什么??y在内存中的地址又变成1865402384了,准确说,y又指向了1865402384这块内存区域了。这样一看,和C语言的指针还真的很像呢。

Python变量赋值的秘密的更多相关文章

  1. Python 变量赋值

  2. Python 变量(赋值,数据类型,数据类型转换)

    一.python 变量赋值方式有三种: 1.直接赋值:age = 28 2.多个变量赋值 age, sex = 28, 1  #每个变量都必须要有个对应的值 3.特殊形式的赋值(链式赋值)  a = ...

  3. python变量的内存机制

    python变量的内存机制 作为一门简单易用的语言,且配备海量的库,python可谓是程序员手中的掌中宝,编程本身就是一种将人类思维转化为计算机思维的技术,如果不需要去追求极致的运行效率同时又不限制于 ...

  4. python 变量、列表、元组、字典

    python 变量.列表.元组.字典 1.python 变量赋值 2.ptython  列表 3.python 元组 4.python  字典 1.  Python变量赋值     1.1变量的命名规 ...

  5. Python 变量详解[学习 Python 必备基础知识][看此一篇就够了]

    您的"关注"和"点赞",是信任,是认可,是支持,是动力...... 如意见相佐,可留言. 本人必将竭尽全力试图做到准确和全面,终其一生进行修改补充更新. 目录 ...

  6. Python变量与基本数据类型

    Python变量与基本数据类型 前言 好了,从本章开始将正式进入Python的学习阶段.本章主要介绍的是Python变量与基本数据类型的认识,这些都是最基本的知识并且必须要牢靠掌握在心中. 注释 学习 ...

  7. Python基础0:变量 赋值 表达式和运算符

    变量: 前面我们在使用print()输出内容的时候,如果内容很长,后面要再次输出的时候,就需重新在输入一遍. 如果给输出的内容起个简单的别名.这样我们用简短的别名来代替长内容,下次要输出的时候就直接使 ...

  8. python变量和变量赋值的几种形式

    动态类型的语言 python是动态类型的语言,不需要声明变量的类型. 实际上,python中的变量仅仅只是用来保存一个数据对象的地址.无论是什么数据对象,在内存中创建好数据对象之后,都只是把它的地址保 ...

  9. Python变量与赋值

    Python是一门独特的语言,与C语言有很大区别,初学Python很多萌新表示对变量与赋值不理解,学过C的都知道,给变量赋值时,需要先指定数据类型,同时会开辟一块内存区域,用于存储值,例如: int ...

随机推荐

  1. 芝麻HTTP:在阿里云上测试Gerapy教程

    1.配置环境 阿里云的版本是2.7.5,所以用pyenv新安装了一个3.6.4的环境,安装后使用pyenv global 3.6.4即可使用3.6.4的环境,我个人比较喜欢这样,切换自如,互不影响. ...

  2. Django学习-9-ORM多对多操作

    创建多对多:             方式一:自定义关系表                 class Host(models.Model):                     nid = mo ...

  3. 如何让window.open()以post请求方式调用(巧妙解法)

    问题由来: 在公司遇到一个线上bug,如下 var url = 'http://106.75.31.215:8012/onlinePreview?url=' + encodeURIComponent( ...

  4. Struts2的数据封装

    在很多的实际开发场景中,页面提交请求参数Action ,在Action中接收参数并对接收的数据进行封装.封装到一个JavaBean中,将JavaBean传递给业务层中.Struts2数据封装分为两类: ...

  5. MySQL入门笔记(二)

    MySQL的数据类型.数据库操作.针对单表的操作以及简单的记录操作可参考:MySQL入门笔记(一) 五.子查询   子查询可简单地理解为查询中的查询,即子查询外部必然还有一层查询,并且这里的查询并非仅 ...

  6. shell 脚本下执行Mongodb命令

    最近项目中搭建了两台mongodb的服务器,由于服务器只有两台的情况下,目前只是搭建了主从模式架构(官方目前并不推荐主从模式),缺点就是故障转移不变等等原因,而是推荐副本集模式(这里就不多说了)... ...

  7. Postman教程——创建第一个集合

    系列文章首发平台为果冻想个人博客.果冻想,是一个原创技术文章分享网站.在这里果冻会分享他的技术心得,技术得失,技术人生.我在果冻想等待你,也希望你能和我分享你的技术得与失,期待. 什么是集合 集合是P ...

  8. 使用zxing生成解析二维码

    1. 前言 随着移动互联网的发展,我们经常在火车票.汽车票.快餐店.电影院.团购网站以及移动支付等各个场景下见到二维码的应用,可见二维码以经渗透到人们生活的各个方面.条码.二维码以及RFID被人们应用 ...

  9. tp5 日志文件名称问题

    原文:http://www.upwqy.com/details/17.html 我的项目在运行一段时间后 我发现在日志中生成了 1508467147-20.log 这种文件名的日志 开始还以为是bug ...

  10. SpringMVC常用注解整理

    一.组件型注解: @Component 在类定义之前添加@Component注解,他会被spring容器识别,并转为bean. @Repository 对Dao实现类进行注解 (特殊的@Compone ...