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

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

No,No, No      它们并不一样(尽管说,python就是用c写的)

 

一  :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本身为其分配内存的时候就已经根据这个值是多少,确定了内存的位置了。。。

 

转自:https://blog.csdn.net/msdnwolaile/article/details/50371991

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值