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当中的字符串和编码
Apr 25 Python
利用python3随机生成中文字符的实现方法
Nov 24 Python
vscode 远程调试python的方法
Dec 01 Python
通过Python 获取Android设备信息的轻量级框架
Dec 18 Python
Python之reload流程实例代码解析
Jan 29 Python
Python异常处理操作实例详解
Aug 28 Python
Django 视图层(view)的使用
Nov 09 Python
Python单元测试unittest的具体使用示例
Dec 17 Python
在Python中关于使用os模块遍历目录的实现方法
Jan 03 Python
在Pycharm中对代码进行注释和缩进的方法详解
Jan 20 Python
Django 自定义权限管理系统详解(通过中间件认证)
Mar 11 Python
使用keras2.0 将Merge层改为函数式
May 23 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 XML数据解析代码
2010/05/26 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
PHP中全局变量global和$GLOBALS[]的区别分析
2012/08/06 PHP
PHP中fwrite与file_put_contents性能测试代码
2013/08/02 PHP
php常用字符串处理函数实例分析
2014/11/22 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
菜鸟javascript基础资料整理3 正则
2010/12/06 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
JavaScript的jQuery库中ready方法的学习教程
2015/08/14 Javascript
js实现的二级横向菜单条实例
2015/08/22 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
javascript表达式和运算符详解
2017/02/07 Javascript
NodeJs安装npm包一直失败的解决方法
2017/04/28 NodeJs
浅谈vue实现数据监听的函数 Object.defineProperty
2017/06/08 Javascript
详解Angular4中路由Router类的跳转navigate
2017/06/09 Javascript
基于easyui checkbox 的一些操作处理方法
2017/07/10 Javascript
VUE Error: getaddrinfo ENOTFOUND localhost
2018/05/03 Javascript
node.js ws模块搭建websocket服务端的方法示例
2019/04/25 Javascript
原生js实现trigger方法示例代码
2019/05/22 Javascript
python实现的解析crontab配置文件代码
2014/06/30 Python
深入理解Python中命名空间的查找规则LEGB
2015/08/06 Python
Python 的类、继承和多态详解
2017/07/16 Python
Python2实现的图片文本识别功能详解
2018/07/11 Python
Python初学者需要注意的事项小结(python2与python3)
2018/09/26 Python
django ObjectDoesNotExist 和 DoesNotExist的用法
2020/07/09 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
HTML5 Canvas入门学习教程
2016/03/17 HTML / CSS
地球上最先进的胡子和头发修剪器:Bevel
2018/01/23 全球购物
100%植物性、有机、即食餐:Sakara Life
2018/10/25 全球购物
Myprotein台湾官方网站:全球领先的运动营养品牌
2018/12/10 全球购物
List、Map、Set三个接口,存取元素时,各有什么特点?
2015/09/27 面试题
人事专员工作职责
2014/02/22 职场文书
《灰椋鸟》教学反思
2014/04/27 职场文书
运动员口号
2014/06/09 职场文书
上课不认真检讨书
2014/09/17 职场文书
导游词之藏龙百瀑景区
2019/12/30 职场文书