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 django实现简单的邮件系统发送邮件功能
Jul 14 Python
Python自定义简单图轴简单实例
Jan 08 Python
在Pycharm中对代码进行注释和缩进的方法详解
Jan 20 Python
Python判断对象是否为文件对象(file object)的三种方法示例
Apr 26 Python
python 杀死自身进程的实现方法
Jul 01 Python
python 实现手机自动拨打电话的方法(通话压力测试)
Aug 08 Python
Django实现发送邮件找回密码功能
Aug 12 Python
python使用gdal对shp读取,新建和更新的实例
Mar 10 Python
Python常用编译器原理及特点解析
Mar 23 Python
Python如何输出整数
Jun 07 Python
如何使用Cython对python代码进行加密
Jul 08 Python
让文件路径提取变得更简单的Python Path库
May 27 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遍历目录viewDir函数
2009/12/15 PHP
Mysql的Root密码忘记,查看或修改的解决方法(图文介绍)
2013/06/14 PHP
PHP获取当前url的具体方法全面解析
2013/11/26 PHP
phpMyAdmin安装并配置允许空密码登录
2015/07/04 PHP
yii2.0实现创建简单widgets示例
2016/07/18 PHP
php实现留言板功能(会话控制)
2017/05/23 PHP
JS获取页面input控件中所有text控件并追加样式属性
2013/02/25 Javascript
javascript实现的一个带下拉框功能的文本框
2014/05/08 Javascript
jquery获取对象的方法足以应付常见的各种类型的对象
2014/05/14 Javascript
动态载入js提高网页打开速度的方法
2014/07/04 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
js使用DOM设置单选按钮、复选框及下拉菜单的方法
2015/01/20 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
使用JQuery 加载页面时调用JS的实现方法
2016/05/30 Javascript
jquery checkbox无法用attr()二次勾选问题的解决方法
2016/07/22 Javascript
H5用户注册表单页 注册模态框!
2016/09/17 Javascript
js将table的每个td的内容自动赋值给其title属性的方法
2016/10/13 Javascript
Vue.js学习笔记之修饰符详解
2017/07/25 Javascript
JS实现闭包中的沙箱模式示例
2017/09/07 Javascript
浅谈js获取ModelAndView值的问题
2018/03/28 Javascript
python远程登录代码
2008/04/29 Python
Python读写unicode文件的方法
2015/07/10 Python
Python之多线程爬虫抓取网页图片的示例代码
2018/01/10 Python
python+tkinter编写电脑桌面放大镜程序实例代码
2018/01/16 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
pycharm编写spark程序,导入pyspark包的3中实现方法
2019/08/02 Python
Django User 模块之 AbstractUser 扩展详解
2020/03/11 Python
Python实现异步IO的示例
2020/11/05 Python
中国高端鲜花第一品牌:roseonly(一生只送一人)
2017/02/12 全球购物
解释一下钝化(Swap out)
2016/12/26 面试题
How to spawning asynchronous work in J2EE
2016/08/29 面试题
打架检讨书800字
2014/01/10 职场文书
2014教师党员个人自我评议
2014/09/20 职场文书
《夹竹桃》教学反思
2016/02/23 职场文书
Python下载商品数据并连接数据库且保存数据
2022/03/31 Python