简单理解python下的变量和内存_电气自动化网
首页 资讯 应用 高压 设计 行业 低压 电路图 关于

嵌入式

旗下栏目: PLC 嵌入式 单片机 DCS

简单理解python下的变量和内存

嵌入式 | 发布时间:2018-06-06 | 人气: | #评论# | 本文关键字:python,变量,内存
摘要:学过c的人,对变量和内存了解的差不多,明白了变量的类型(int, float , double),知道列它们所占内存的大小可是,python中他们是一样的吗? 它们并不一样(尽管说,python就是用c写的) 一

学过c的人,对变量和内存了解的差不多,明白了变量的类型(int, float , double),知道列它们所占内存的大小可是,python中他们是一样的吗?它们并不一样(尽管说,python就是用c写的)

一:python下的变量

不需要预先声明变量的类型,变量的类型和值在赋值的那一刻被初始化(声明和定义的过程一起完成)

在python中, 每一个变量在内存中创建,我们可以通过变量来查看内存中的值

哈哈,这里是不是很熟悉,跟c中的指针一样啊(访问内存中的值)

首先大家需要了解一点:在python中:

x =5之后,我们要了解它的过程:系统先是找了一块内存,将5存储了进去,紧接着x指向了当前的这块内存

      预测1:      python下的变量是一个指针

  1. >>> x = 4  

  2. >>> y = 5  

  3. >>> print x  

  4. 4  

  5. >>> print y  

  6. 5  

  7. >>> id(x)  

  8. 10413988  

  9. >>> id(y)  

  10. 10413976  

  11. >>> x = y  

  12. >>> id(x)  

  13. 10413976  

  14. >>> id(y)  

  15. 10413976  

  16. >>>   

从上面我们可以看到:

x = 4        说明x指向了内存中存储为4的那个地址,那个地址是10413988

y = 5        说明y指向了内存中存储为5的那个地址,那个地址是10413976

 1.png

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

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

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

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

[python] 

>>> x = 4  

  1. >>> print x  

  2. 4  

  3. >>> id(x)  

  4. 10413988  

  5. >>> x = 5  

  6. >>> print x  

  7. 5  

  8. >>> id(x)  

  9. 10413976  

  10. >>>   

好,我们大家接着看:

3.png

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

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

4.png

 不知道大家注意到了吗?

在python中,一开始初始化存储在内存的东西是不可以更改的,我们所能更改的只是它的指向,
但是,但是,在c中,对于int   x= 4;   也就是说x的地址是定的,里面存储的东西可以更改

  1. #include <stdio.h>  

  2. int main(){  

  3.     int x = 4;  

  4.     printf("%p    %d\n", &x, x);  

  5.     x = 5;  

  6.     printf("%p    %d\n", &x, x);  

  7.       

  8.     return 0;  

  9. }  

我们大家再看一下运行结果:

1.png

从上面可以看到,地址并没有变,好了,这一点,python和c的区别较大,希望大家注意。

二: 内存大小

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

[python]

  1. >>> x = 6  

  2. >>> id(x)  

  3. 10413964  

  4. >>> y = 7  

  5. >>> id(y)  

  6. 10413952  

  7. >>> z = 8  

  8. >>> id(z)  

  9. 10413940  

  10. >>>   

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

10413964

10413952

10413940

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

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

2.png

三:python内存

        是不是说:在python中,系统将每一个值都放在了一个固定的位置,不然为什么,每一次探究内存地址的时候,结果都是一样的(数值相等,地址也相等)

[python] 

  1. >>> x = 4  

  2. >>> y = 5  

  3. >>> id(x)  

  4. 10413988  

  5. >>> id(y)  

  6. 10413976  

  7. >>>   

假如系统为4分配了一块内存,遵循某种规则(类似于c里面的内存对齐),那么接下来为5分配了另一块内存,权且分配到了10413976

那么下面这个如何解释:

[python] 

>>> x = 4  

  1. >>> y = 6  

  2. >>> id(x)  

  3. 10413988  

  4. >>> id(y)  

  5. 10413964  

  6. >>>   

假如遵循某种规则的话,应该是6也分配到了10413976去了,可是,他被分配到了10413964

我们再来看:

[python] 

  1. >>> x = 4  

  2. >>> y = 6  

  3. >>> id(x)  

  4. 10413988  

  5. >>> id(y)  

  6. 10413964  

  7. >>> z = 5  

  8. >>> id(z)  

  9. 10413976  

  10. >>>   

也就是说:python中,系统还是python本身为其分配内存的时候就已经根据这个值是多少,确定了内存的位置了。

责任编辑:变量
首页 | 电气资讯 | 应用技术 | 高压电器 | 电气设计 | 行业应用 | 低压电器 | 电路图 | 关于我们 | 版权声明

Copyright 2017-2018 电气自动化网 版权所有 辽ICP备17010593号-1

电脑版 | 移动版 原创声明:本站大部分内容为原创,转载请注明电气自动化网转载;部分内容来源网络,如侵犯您的权益请发送邮件到[email protected]联系我们删除。