Python 初学(3)
来源:互联网 发布:JS在区间内取随机数 编辑:程序博客网 时间:2024/05/21 19:42
动态类型简介
如果你有学习静态编译类型语言C、C++或Java的背景,学到这里你也许会困惑。到目前为止,我们使用变量时,都没有声明变量的存在和类型,但是变量还可以工作。
当你开始问这样的问题的时候,就进入了Python动态类型模型的领域。在Python中,类型是在运行过程中自动决定的。这意味着没有必要事先声明变量(这个概念实质上对变量,对象和他们直接的关系都适用)。
变量、对象和引用
就像之前学习的例子一样,当在Python中运行赋值语句 a=3时,即使没有告诉Python将a作为一个变量来用。
变量创建
一个变量(也就是变量名),就像a,当代码第一次给它赋值时就创建了它,之后的赋值会改变已创建的变量名的值。
变量类型
变量永远不会有任何和它关联的类型信息或约束。类型的概念是存在与对象中而不是变量名中。变量原本是通用的,它只是在以供特定的时间点,简单的引用了一个特定的对象而已。
变量a在第一次赋值时是整数,第二次给他赋值时是字符串,变量名并不存在特定的类型。
Python 完成 a=3 将执行3个不同的步骤去完成这个请求。
1,创建以供对象代表值3;
2,创建以供变量a,如果它还没有创建的话。
3,将变量与新的对象3相连接。
注意这里a 指向的是一个代表3的对象,而不是其他语言那样,开辟一个内存空间存放数字3。
在Python中从变量到对象的连接称作引用。也就是说,引用是一种关系,以内存中的指针形式实现。一旦变量被使用,Python会自动跟随这个变量到对象的连接。
对象的垃圾收集
前面我们尝试过给变量a,多次赋值,a只连接到最近的一次赋值的对象。那么之前的对象呢?每次赋值都会创建一个对象的。实际上,每当一个变量名被赋予了一个新的对象,之前的那个对象所占用的空间就会被回收(如果它没有被其他的变量名或对象所引用的话)。这种自动回收对象空间的技术叫做垃圾收集。
共享引用
到现在为止,我们已经看到了单个变量被赋值引用多个对象的情况,现在在交互模式下,引入另一个变量,并看一下变量名和对象的变化:
可以看到,a变了,b还是3。这中间的关系可以参考下面两幅图来理解。
可以这样理解,只要产生了新的对象,那边a和b 必然不会一样。如果不产生新的对象那么a和b还是一样的。
参见下面列表的例子:
当我们改变列表的某个元素时,a,b所引用的内容还是一致的,关键就在于列表的可变性。改变了之后,列表还是那个列表,只不过它里面的东西变了。
工作日,学习的时间少,今晚就学这些。
- python初学小结3
- Python 初学(3)
- 初学python-3
- Python初学笔记3
- python爬虫初学(3)
- 初学python
- 初学python
- 初学Python
- 初学python
- 初学python
- 初学Python
- python初学
- 初学python
- 初学python
- python初学
- 初学python
- 初学Python
- python初学
- Java NIO系列教程(十) Java NIO DatagramChannel
- 把握linux内核设计思想系列
- 做微商还有很长微商卖什么孙佺推广的路要走,还有很多技巧要学习
- 大数据处理初探
- ios学习资料:
- Python 初学(3)
- 二叉树 小球下落问题
- Gerrit代码审核服务器搭建
- libevent源码分析-event
- 继承和重写(8.17)
- 用word模板作为add-in,制作一些快捷操作
- ListView性能优化
- C++拷贝构造函数详解
- 纱布の莫比乌斯反演的一些理解。