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 相关文章推荐
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
wxPython窗口中文乱码解决方法
Oct 11 Python
在Python的Django框架中获取单个对象数据的简单方法
Jul 17 Python
windows下python安装pip图文教程
May 25 Python
python 定义n个变量方法 (变量声明自动化)
Nov 10 Python
Python实现二维曲线拟合的方法
Dec 29 Python
python实现nao机器人身体躯干和腿部动作操作
Apr 29 Python
Python3 使用map()批量的转换数据类型,如str转float的实现
Nov 29 Python
Python 动态变量名定义与调用方法
Feb 09 Python
python数据分析:关键字提取方式
Feb 24 Python
Python 中由 yield 实现异步操作
May 04 Python
Python pyecharts绘制条形图详解
Apr 02 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
PHP下利用header()函数设置浏览器缓存的代码
2010/09/01 PHP
基于php在各种web服务器的运行模式详解
2013/06/03 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
浅析PHP中的UNICODE 编码与解码
2013/06/29 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
Cygwin中安装PHP方法步骤
2015/07/04 PHP
golang与php实现计算两个经纬度之间距离的方法
2016/07/22 PHP
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
让浏览器非阻塞加载javascript的几种方法小结
2011/04/25 Javascript
js实现ArrayList功能附实例代码
2014/10/29 Javascript
浅谈javascript中字符串String与数组Array
2014/12/31 Javascript
jQuery实现个性翻牌效果导航菜单的方法
2015/03/09 Javascript
js+html5绘制图片到canvas的方法
2015/06/05 Javascript
浅谈JavaScript的Polymer框架中的事件绑定
2015/07/29 Javascript
常用原生JS兼容性写法汇总
2016/04/27 Javascript
JS实现颜色梯度与渐变效果完整实例
2016/12/30 Javascript
使用vue.js实现checkbox的全选和多个的删除功能
2017/02/17 Javascript
浅谈Webpack 持久化缓存实践
2018/03/22 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
bootstrap table表格插件之服务器端分页实例代码
2018/09/12 Javascript
Element-UI中关于table表格的那些骚操作(小结)
2019/08/15 Javascript
js函数和this用法实例分析
2020/03/13 Javascript
python操作MySQL 模拟简单银行转账操作
2017/09/27 Python
Python cookbook(数据结构与算法)找出序列中出现次数最多的元素算法示例
2018/03/15 Python
简单了解django orm中介模型
2019/07/30 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
Python程序控制语句用法实例分析
2020/01/14 Python
Python如何操作docker redis过程解析
2020/08/10 Python
Zipadee-Zip襁褓过渡毯:Sleeping Baby
2018/12/30 全球购物
小学生家长评语大全
2014/02/10 职场文书
幼儿教师研修感言
2014/02/12 职场文书
项目合作协议书范本
2014/04/16 职场文书
媒体宣传策划方案
2014/05/25 职场文书
送温暖献爱心活动总结
2014/07/08 职场文书
个人简历求职信范文
2015/03/20 职场文书
图书借阅制度范本
2015/08/06 职场文书