博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python中的变量怎样开辟内存
阅读量:2445 次
发布时间:2019-05-10

本文共 1844 字,大约阅读时间需要 6 分钟。

python下的变量

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

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

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

         

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

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

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

[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

 

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

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

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

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

[python]
  1. >>> x = 4  
  2. >>> print x  
  3. 4  
  4. >>> id(x)  
  5. 10413988  
  6. >>> x = 5  
  7. >>> print x  
  8. 5  
  9. >>> id(x)  
  10. 10413976  
  11. >>>   
好,我们大家接着看:

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

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

 

 好,ok就是这样了,
不知道大家注意到了吗?
在python中,一开始初始化存储在内存的东西是不可以更改的,我们所能更改的只是它的指向,
但是,但是,在c中,对于int   x= 4;   也就是说x的地址是定的,里面存储的东西可以更改
[cpp]
  1. #include <stdio.h>  
  2.   
  3. int main(){  
  4.     int x = 4;  
  5.     printf("%p    %d\n", &x, x);  
  6.     x = 5;  
  7.     printf("%p    %d\n", &x, x);  
  8.       
  9.     return 0;  
  10. }  
我们大家再看一下运行结果:
从上面可以看到,地址并没有变,好了,这一点,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(哈哈,纯属个人推测)
有可能内存中就是这样了的:
哈哈,也该就是这样子了,
    

至于其他的大小,有兴趣的朋友可以研究研究

三: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]
  1. >>> x = 4  
  2. >>> y = 6  
  3. >>> id(x)  
  4. 10413988  
  5. >>> id(y)  
  6. 10413964  
  7. >>>   
假如遵循某种规则的话,应该是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本身为其分配内存的时候就已经根据这个值是多少,确定了内存的位置了。。。
你可能感兴趣的文章
为什么运行微波会杀死Wi-Fi连接?
查看>>
matlab生成文本乱码_如何生成完全随机/乱码文本的段落
查看>>
siri捷径调用谷歌翻译_告诉它使用Google助理,以减少Siri的麻烦
查看>>
outlook转发邮件步骤_Microsoft Outlook中的快速步骤指南
查看>>
macos 托盘文件预览_如何在Ubuntu的文件管理器中快速预览文件(如macOS中的“ Quick Look”)...
查看>>
macos 快速启动启动台_无法获取macOS通知? 这是解决方法(无需重新启动)
查看>>
为什么您可能不应该将您的企业网站运出家门
查看>>
如何在Android上使用Amazon Underground免费获取大量应用内购买
查看>>
如何使用HDHomeRun在计算机,游戏机和其他设备上观看直播电视
查看>>
如何在没有智能手机的情况下使用Google Authenticator和其他两因素身份验证应用程序...
查看>>
什么是“ Microsoft网络实时检查服务”(NisSrv.exe),为什么它在我的PC上运行?...
查看>>
如何显示密件抄送人员地址_什么是密件抄送,以及为什么不使用它会成为一个可怕的人...
查看>>
询问HTG:增强Wi-Fi连接性,校准显示器并执行基于计算机的恶作剧
查看>>
将code添加到上下文菜单_通过将选项卡添加到资源管理器,创建上下文菜单项等来轻松调整Windows 7和Vista...
查看>>
询问HTG:选择要备份的文件,将扫描仪用作复印机,并将iPad配置为第二台显示器...
查看>>
es dsl 提取不重复值_询问操作方法:诊断DSL挂断,从PowerPoint中提取媒体,将IE限制为单个网页...
查看>>
在Boxee中使用Pandora
查看>>
linux创建交换分区设置_如何在Linux上创建交换文件
查看>>
vim 关闭查找_如何打开或关闭查找我的iPad
查看>>
linux rev命令_如何在Linux上使用rev命令
查看>>