python中的变量如何开辟内存

 更新时间:2018年06月26日 10:21:58   作者:lm_y  
python中的变量如何开辟内存?今天小编就为大家介绍一下python中变量开辟内存的方法。具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

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

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

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

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

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

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

好,我们大家接着看:

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

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

好,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和c的区别较大,希望大家注意。

二: 内存大小

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

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

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

10413964
10413952
10413940

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

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

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

三: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中的海象运算符使用方法详解

    这篇文章主要介绍了关于Python中的海象运算符“:=”使用方法详解,海象运算符(walrus operator)是 Python 3.8 中引入的一种新的语法,需要的朋友可以参考下
    2023-04-04
  • 对python中的乘法dot和对应分量相乘multiply详解

    对python中的乘法dot和对应分量相乘multiply详解

    今天小编就为大家分享一篇对python中的乘法dot和对应分量相乘multiply详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python爬取视频时长场景实践示例

    Python爬取视频时长场景实践示例

    这篇文章主要为大家介绍了Python获取视频时长场景实践示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-07-07
  • python多线程并发实例及其优化

    python多线程并发实例及其优化

    这篇文章主要介绍了python多线程并发实例及其优化,threading是扩展模块,在thread的基础上进行了封装及改进。所以只需要使用threading这个模块就能完成并发的测试,需要的朋友可以参考下
    2019-06-06
  • Python适配器模式代码实现解析

    Python适配器模式代码实现解析

    这篇文章主要介绍了Python适配器模式代码实现解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python写的贪吃蛇游戏例子

    Python写的贪吃蛇游戏例子

    这篇文章主要介绍了Python写的贪吃蛇游戏例子,练手作品,又好玩又可以学到东西,需要的朋友可以参考下
    2014-06-06
  • 在langchain中对大模型的输出进行格式化实现

    在langchain中对大模型的输出进行格式化实现

    这篇文章主要为大家介绍了在langchain中对大模型的输出进行格式化实现示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-11-11
  • pygame实现俄罗斯方块游戏(基础篇3)

    pygame实现俄罗斯方块游戏(基础篇3)

    这篇文章主要介绍了pygame实现俄罗斯方块游戏基础的第3篇,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-10-10
  • python+opencv+caffe+摄像头做目标检测的实例代码

    python+opencv+caffe+摄像头做目标检测的实例代码

    今天小编就为大家分享一篇python+opencv+caffe+摄像头做目标检测的实例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • 详解Django+uwsgi+Nginx上线最佳实战

    详解Django+uwsgi+Nginx上线最佳实战

    这篇文章主要介绍了Django+uwsgi+Nginx上线最佳实战,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03

最新评论