python中的变量如何开辟内存


Posted in Python onJune 26, 2018

python下的变量

不需要预先声明变量的类型,变量的类型和值在赋值的那一刻被初始化(声明和定义的过程一起完成)

在python中, 每一个变量在内存中创建,我们可以通过变量来查看内存中的值

哈哈,这里是不是很熟悉,跟c中的指针一样啊(访问内存中的值)

首先大家需要了解一点:在python中:

x =5之后,我们要了解它的过程:系统先是找了一块内存,将5存储了进去,紧接着x指向了当前的这块内存

预测1:python下的变量是一个指针

>>> x = 4 
>>> y = 5 
>>> print x 
4 
>>> print y 
5 
>>> id(x) 
10413988 
>>> id(y) 
10413976 
>>> x = y 
>>> id(x) 
10413976 
>>> id(y) 
10413976 
>>>

从上面我们可以看到:

x = 4

说明x指向了内存中存储为4的那个地址,那个地址是10413988

y = 5

说明y指向了内存中存储为5的那个地址,那个地址是10413976

python中的变量如何开辟内存

也就是说在执行x = 4,y = 5之后,x,y分别指向了不同的地址,当执行 x = y之后:

python中的变量如何开辟内存

也就是说,x指向了y所指向的内存了,这里我们知道,它们都指向同一块内存

哈哈,原来跟c里面的指针真的一样哎!!!哈哈哈

(但是,但是,但是:就这些吗??)

>>> x = 4 
>>> print x 
4 
>>> id(x) 
10413988 
>>> x = 5 
>>> print x 
5 
>>> id(x) 
10413976 
>>>

好,我们大家接着看:

python中的变量如何开辟内存

也就是说:开始的时候,x指向了10413988这块内存,里面存储的是4

当执行了x = 5之后,也就变成了这样:

python中的变量如何开辟内存

好,ok就是这样了,

不知道大家注意到了吗?

在python中,一开始初始化存储在内存的东西是不可以更改的,我们所能更改的只是它的指向,

但是,但是,在c中,对于int x= 4; 也就是说x的地址是定的,里面存储的东西可以更改

#include <stdio.h> 
 
int main(){ 
 int x = 4; 
 printf("%p %d\n", &x, x); 
 x = 5; 
 printf("%p %d\n", &x, x); 
  
 return 0; 
}

我们大家再看一下运行结果:

python中的变量如何开辟内存

从上面可以看到,地址并没有变,好了,这一点,python和c的区别较大,希望大家注意。

二: 内存大小

我们来看一下这样的代码:

>>> x = 6 
>>> id(x) 
10413964 
>>> y = 7 
>>> id(y) 
10413952 
>>> z = 8 
>>> id(z) 
10413940 
>>>

从上面的程序中,我们知道系统给分配的地址分别是:

10413964
10413952
10413940

所以我们大胆推测,python中应该给这些整数的字节有可能就是12(哈哈,纯属个人推测)

有可能内存中就是这样了的:

python中的变量如何开辟内存

哈哈,也该就是这样子了, 至于其他的大小,有兴趣的朋友可以研究研究

三:python内存

是不是说:在python中,系统将每一个值都放在了一个固定的位置,不然为什么,每一次探究内存地址的时候,结果都是一样的(数值相等,地址也相等)

>>> x = 4 
>>> y = 5 
>>> id(x) 
10413988 
>>> id(y) 
10413976 
>>>

假如系统为4分配了一块内存,遵循某种规则(类似于c里面的内存对齐),那么接下来为5分配了另一块内存,权且分配到了10413976

那么下面这个如何解释:

>>> x = 4 
>>> y = 6 
>>> id(x) 
10413988 
>>> id(y) 
10413964 
>>>

假如遵循某种规则的话,应该是6也分配到了10413976去了,可是,他被分配到了10413964

我们再来看:

>>> x = 4 
>>> y = 6 
>>> id(x) 
10413988 
>>> id(y) 
10413964 
>>> z = 5 
>>> id(z) 
10413976 
>>>

这,哈哈,应该就是这样的了的吧!!!!

也就是说:python中,系统还是python本身为其分配内存的时候就已经根据这个值是多少,确定了内存的位置了。。。

以上这篇python中的变量如何开辟内存就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python轻松查到删除自己的微信好友
Jan 10 Python
简述Python中的进程、线程、协程
Mar 18 Python
Django的信号机制详解
May 05 Python
Python实现识别手写数字 简易图片存储管理系统
Jan 29 Python
Python实现判断一行代码是否为注释的方法
May 23 Python
详解Django rest_framework实现RESTful API
May 24 Python
浅谈django rest jwt vue 跨域问题
Oct 26 Python
Python离线安装PIL 模块的方法
Jan 08 Python
详解Python 爬取13个旅游城市,告诉你五一大家最爱去哪玩?
May 07 Python
python实现坦克大战游戏 附详细注释
Mar 27 Python
PyCharm搭建Spark开发环境实现第一个pyspark程序
Jun 13 Python
Python编程快速上手——Excel表格创建乘法表案例分析
Feb 28 Python
pyQt4实现俄罗斯方块游戏
Jun 26 #Python
朴素贝叶斯分类算法原理与Python实现与使用方法案例
Jun 26 #Python
python实现俄罗斯方块
Jun 26 #Python
解决python报错MemoryError的问题
Jun 26 #Python
pygame实现俄罗斯方块游戏
Jun 26 #Python
python和pygame实现简单俄罗斯方块游戏
Feb 19 #Python
解决python读取几千万行的大表内存问题
Jun 26 #Python
You might like
9个经典的PHP代码片段分享
2014/12/18 PHP
PHP技术开发微信公众平台
2015/07/22 PHP
thinkPHP5分页功能实现方法分析
2017/10/25 PHP
input 和 textarea 输入框最大文字限制的jquery插件
2011/10/27 Javascript
js字符串转换成xml对象并使用技巧解读
2013/04/18 Javascript
JavaScript实现复制功能各浏览器支持情况实测
2013/07/18 Javascript
JS实现仿中关村论坛评分后弹出提示效果的方法
2015/02/23 Javascript
javascript实现手机震动API代码
2015/08/05 Javascript
基于vue实现可搜索下拉框定制组件
2020/03/26 Javascript
vue 右键菜单插件 简单、可扩展、样式自定义的右键菜单
2018/11/29 Javascript
VueCli3.0中集成MockApi的方法示例
2019/07/05 Javascript
微信小程序图片左右摆动效果详解
2019/07/13 Javascript
JS浮点数运算结果不精确的Bug解决
2019/08/01 Javascript
详解vue 中 scoped 样式作用域的规则
2020/09/14 Javascript
[40:04]Secret vs Infamous 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.23
2019/09/05 DOTA
python实现字符串连接的三种方法及其效率、适用场景详解
2017/01/13 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
pytorch 输出中间层特征的实例
2019/08/17 Python
opencv调整图像亮度对比度的示例代码
2019/09/27 Python
python+opencv实现车牌定位功能(实例代码)
2019/12/24 Python
PyTorch中permute的用法详解
2019/12/30 Python
Django数据库操作之save与update的使用
2020/04/01 Python
TensorFlow Autodiff自动微分详解
2020/07/06 Python
Python在线和离线安装第三方库的方法
2020/10/31 Python
HTML5页面嵌入小程序没有返回按钮及返回页面空白的问题
2020/05/28 HTML / CSS
酒店办公室文员岗位职责
2013/12/18 职场文书
职工运动会邀请函
2014/01/19 职场文书
联谊活动策划书
2014/01/26 职场文书
竞争性谈判邀请书
2014/02/06 职场文书
护理专业求职信
2014/06/15 职场文书
习近平在党的群众路线教育实践活动总结大会上的讲话
2014/10/21 职场文书
毕业生见习报告总结
2014/11/08 职场文书
2016年寒假社会实践活动总结
2015/03/27 职场文书
Android自定义scrollview实现回弹效果
2022/04/01 Java/Android
vue 数字翻牌器动态加载数据
2022/04/20 Vue.js
Win11无法安装更新补丁KB3045316怎么办 附KB3045316补丁修复教程
2022/08/14 数码科技