不需要预先声明变量的类型,变量的类型和值在赋值的那一刻被初始化(声明和定义的过程一起完成)
在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之后,也就变成了这样:
不知道大家注意到了吗?
在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;
- }
- >>> x = 6
- >>> id(x)
- 10413964
- >>> y = 7
- >>> id(y)
- 10413952
- >>> z = 8
- >>> id(z)
- 10413940
- >>>
至于其他的大小,有兴趣的朋友可以研究研究
三:python内存
是不是说:在python中,系统将每一个值都放在了一个固定的位置,不然为什么,每一次探究内存地址的时候,结果都是一样的(数值相等,地址也相等)
- >>> x = 4
- >>> y = 5
- >>> id(x)
- 10413988
- >>> id(y)
- 10413976
- >>>
那么下面这个如何解释:
- >>> x = 4
- >>> y = 6
- >>> id(x)
- 10413988
- >>> id(y)
- 10413964
- >>>
我们再来看:
- >>> x = 4
- >>> y = 6
- >>> id(x)
- 10413988
- >>> id(y)
- 10413964
- >>> z = 5
- >>> id(z)
- 10413976
- >>>
也就是说:python中,系统还是python本身为其分配内存的时候就已经根据这个值是多少,确定了内存的位置了。。。