简单理解python下的变量和内存
来源:互联网 发布:计算机编程英语词汇 编辑:程序博客网 时间:2024/06/03 14:52
相信学过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 x4>>> print y5>>> 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 x4>>> id(x)10413988>>> x = 5>>> print x5>>> 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>>>假如系统为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下的字符串
- java中栈内存和堆内存的简单理解
- Python 变量和简单数据类型
- python函数参数的理解,对象和变量
- JAVA学习.JAVA对象构建内存理解&静态方法和变量的理解和使用.
- 深入理解C系列:不同类型变量的变量名和内存间的关系
- 深入理解C系列:不同类型变量的变量名和内存间的关系
- 深入理解C系列:不同类型变量的变量名和内存间的关系
- python 的变量和注释及简单的用户交互
- 从内存和内存的分区的角度来理解数据类型 、变量、指针。
- Java的内存机制(堆和栈)简单理解
- Python学习笔记(1)-变量和简单的数据类型
- Python 变量的简单知识
- Xapian ( Python ) 之 TermGenerator 的简单理解和使用示例
- 变量和内存的关系
- Python -- 1. 变量和简单数据类型
- 监督学习之梯度下降——Andrew Ng机器学习笔记(一)
- Java源码之Stack
- 报错:finished with non-zero exit value 2
- 开源框架之Picasso进行网络图片下载
- NMS——卷积网络改进实现
- 简单理解python下的变量和内存
- Redis 视频教程 大数据 高性能 集群 NoSQL 设计 实战 入门 命令
- java.util.Arrays类详解(源码总结)
- OneAPM Cloud Test——系统性能监控神器
- 删除已经配置的类库和移除CocoaPods
- PAT-支票面额(基础编程题)
- 百度地图API自定义覆盖物与添加点击事件
- XML:体验学习的乐趣之XML总结
- ELK学习10_ELK系列--实时日志分析系统ELK 部署与运行中的问题汇总