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 时间处理datetime实例
Sep 06 Python
python控制台英汉汉英电子词典
Apr 23 Python
python中json格式数据输出的简单实现方法
Oct 31 Python
python常用知识梳理(必看篇)
Mar 23 Python
Django项目中包含多个应用时对url的配置方法
May 30 Python
python高效过滤出文件夹下指定文件名结尾的文件实例
Oct 21 Python
pyqt5 QProgressBar清空进度条的实例
Jun 21 Python
Pandas0.25来了千万别错过这10大好用的新功能
Aug 07 Python
Python3实现打印任意宽度的菱形代码
Apr 12 Python
Python select及selectors模块概念用法详解
Jun 22 Python
python语言time库和datetime库基本使用详解
Dec 25 Python
python装饰器代码深入讲解
Mar 01 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
其他功能
2006/10/09 PHP
如何使用php绘制在图片上的正余弦曲线
2013/06/08 PHP
向当前style sheet中插入一个新的style实现方法
2013/04/01 Javascript
对Jquery中的ajax再封装,简化操作示例
2014/02/12 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
初识Node.js
2015/03/20 Javascript
JavaScript图片轮播代码分享
2015/07/31 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
AngularJs验证重复密码的方法(两种)
2016/11/25 Javascript
详解数组Array.sort()排序的方法
2020/05/09 Javascript
详解.vue文件中监听input输入事件(oninput)
2017/09/19 Javascript
vue 自定义全局方法,在组件里面的使用介绍
2018/02/28 Javascript
vue给组件传递不同的值方法
2018/09/29 Javascript
angularjs获取到My97DatePicker选中的值方法
2018/10/02 Javascript
Electron中实现大文件上传和断点续传功能
2018/10/28 Javascript
node.js实现带进度条的多文件上传
2020/03/27 Javascript
JavaScript React如何修改默认端口号方法详解
2020/07/28 Javascript
JavaScript实现刮刮乐效果
2020/11/01 Javascript
浅谈Vue static 静态资源路径 和 style问题
2020/11/07 Javascript
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
[42:35]2018DOTA2亚洲邀请赛3月30日 小组赛A组 VG VS OpTic
2018/03/31 DOTA
Python完全新手教程
2007/02/08 Python
python实现统计代码行数的方法
2015/05/22 Python
手把手教你用python抢票回家过年(代码简单)
2018/01/21 Python
python使用Matplotlib绘制分段函数
2018/09/25 Python
Python super()函数使用及多重继承
2020/05/06 Python
MAC平台基于Python Appium环境搭建过程图解
2020/08/13 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
CSS3制作酷炫的三维相册效果
2016/07/01 HTML / CSS
使用HTML5的File实现base64和图片的互转
2013/08/01 HTML / CSS
西班牙在线光学:Visual-Click
2020/06/22 全球购物
简历自我评价模板
2015/03/11 职场文书
感恩节寄语2015
2015/03/24 职场文书
老公出轨后的保证书
2015/05/08 职场文书
钢铁是怎样炼成的读书笔记
2015/06/29 职场文书
高中开学感言
2015/08/01 职场文书