Python<9>动态类型简介

动态类型以及它提供的多态性,无疑是Python语言简洁性和灵活性的基础。

一、变量

<1>变量创建

一个变量a,当代码第一次给它赋值时就创建了它,之后的赋值将会改变已创建的变量名的值。

<2>变量类型

变量永远不会有任何的和它关联的类型信息或约束。变量原本是通用的,它只是在一个特定的时间点,简单的引用了

一下特定的对象而已。

<3>变量使用

当变量出现在表达式中,它会马上被当前引用的对象所替代(对象是有类型的)。此外所有的变量必须在使用前明确的

赋值,使用未赋值的变量会发生错误。

总而言之,变量在赋值时才创建,它可以引用任何类型的对象,并且必须在引用前赋值。

例如  a = 3

会经历三个步骤:

<1>创建一个对象来代表值3

<2>创建一个变量a

<3>将变量与新的对象相连接

因此可得

对象是分配的一块内存,有足够的空间去表示它们所代表的值。

变量是一个系统表的元素,拥有指向对象的连接的空间。

引用是自动形成的从变量到对象的指针。

二、类型属于对象,而不是变量

对一个变量多次赋值得,

>>> a = 3

>>> a = ‘hello‘

>>> a = 3.1415

由此可见变量名是没有类型的,而类型是属于对象的。我们对a的修改只是让它成为不同对象的引用。对象是有类型

的,整数对象3包含值3以及一个头部信息,告诉python这是一个整数类型。

三、对象的垃圾收集

在python中,当一个变量名被赋予一个新的对象,之前的那个对象占用的空间就会被回收(如果它没有被其他变量引

用),称为垃圾收集。

在内部python是这样来实现这一功能的:

它在每个对象中保持了一个计数器,记录了当前指向该对象的引用的数目,一旦这个计数器的值为0,这个对象的内

存空间会自动回收。这意味着不需要考虑内存释放等问题,省去大量的基础代码。

四、共享引用

例:

>>> a = 3

>>> b = a

此时a,b都成为对象3的一个引用,叫做共享引用。

>>> a = ‘hello‘

当a改变时,这时不会改变b的值,只是a修改为‘hello‘的引用而已。

给变量赋一个新的值,不是替换了原始的变量,而是让这个变量去引用完全不同的另一个对象,效果就像重新赋值一

样,仅仅会影响被赋值的变量。

五、共享引用和原处修改

有一些对象和操作确实会在原处改变对象,例如之前写过的"Python<1>list",进行一些操作时不是生成一个新的对

象,而是直接修改了自身引用的对象,此时共享引用需要加倍小心。如果你不想要这样的现象发生,需要python拷贝

对象,而不是创建引用。最常见的办法就是从头到尾的分片。

>>> L1 = L2[:]

此时对其中一个的修改不会影响另一个,两个对象在不同的内存区域。

参考<<learning python>>

Python<9>动态类型简介

时间: 2024-10-14 17:52:45

Python<9>动态类型简介的相关文章

动态类型简介

一.第一个Python程序print('Hello World') 二. 动态类型简介 在学习Python之时,掌握Python编程中最基本的概念是很重要的.动态类型以及由他提供的多态性,是Python语言简洁和灵活的基础. 1. 缺少类型声明语句在Python中,我们使用变量时,没有声明变量的存在和类型(如 int a= 1),但是变量还是在工作,为啥子?其实在Python中,类型是在程序的运行过程中自动决定的,而不是通过代码的声明来决定的.Ps:这个概念对变量.对象和他们之间的关系都适用.

《Python 学习手册4th》 第六章 动态类型简介

''' 时间: 9月5日 - 9月30日 要求: 1. 书本内容总结归纳,整理在博客园笔记上传 2. 完成所有课后习题 注:“#” 后加的是备注内容 (每天看42页内容,可以保证月底看完此书)“重点笔记”“本章习题” - 标题1,二级标题用- 标题2,笔记大纲标题.习题题目- 加粗,16px ''' 重点笔记 : 摘要 动态类型是Python语言灵活性的根源(尤其是其提供的多态性) 一. 缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明. 二. 变量.对

Python动态类型简介

在C语言中使用变量, 需先声明其类型, 如int a = 3, 而Python中直接 a = 3就行, Python怎么知道那代表了一个整数呢? 在Python中类型是在运行过程中决定的, 而不是事先声明的. 像上面Python中运行赋值语句 a = 3, 代码中没有说明a是整数对象类型, 但一样也能工作, 可按如下思路来理解该原由. 变量创建: 一个变量, 就像a, 当代码第一次给它赋值时就创建了它, 之后的赋值将会改变已创建的变量名的值. 变量类型: 变量永远不会有任何的和它关联的类型信息或

Python学习笔记整理(三)Python中的动态类型简介

Python中只有一个赋值模型 一.缺少类型声明语句的情况 在Python中,类型是在运行过程中自动决定的,而不是通过代码声明.这意味着没有必要事声明变量.只要记住,这个概念实质上对变量,对象和它们之间的关系都适用.那么这个概念也容易理解并掌握. 1.变量,对象和引用 变量创建:一个变量,当代码第一次给它赋值时它就被创建了.之后的赋值将会改变已创建的变量名的值.Python在代码运行之前先检测变量名,可以当成是最初的赋值创建变量. 变量类型:变量永远不会有任何的它关联的类型信息或约束.类型的概念

Python的动态类型

动态类型:                                                      在python中,类型是在运行过程中自动决定的,而不是通过代码声明的. 变量:                                                                                     变量是一个系统表的元素,拥有指向对象的连接的空间 python中,类型的概念是存在于对象中的,而不是变量中,变量是通用的. 变量的使用

第六章 动态类型简介

#1. #A:在python中,类型属于对象而非变量名,每一个对象有两个标准头部信息:一个类型标示符,一个引用的计数器(python中的垃圾收集主要基于引用计数器) #B:在python中,每当一个变量名被赋予一个新对象时,之前那个对象若没有被别的变量名或对象引用的话,那么其占用内存就会被释放,这种计数被称为垃圾收集 #C:在python中,变量总是一个指向对象的指针,而不是可改变的内存区域的标签,给变量赋一个新的值,并不是替换了原始的对象,而是让这个变量去引用了另一个完全不同的对象 #2.sy

python系列------函数类型简介

1.系统库提供内部函数(官方提供) 字符函数库(help(str)来查看具体的函数) 数学函数库(import math首先需要导入库,help(math)来查看具体的函数) OS函数库(import os首先需要导入库,help(os)来查看具体的函数) 网络编程库(import socket首先需要导入库,help(socket)来查看具体的函数) 2.第三方提供的函数(开源项目) 3.自定义函数(自己编写的函数) def function_name(val1,val2): 内容 内容 内容

【Python】python动态类型

在python中,省去了变量声明的过程,在引用变量时,往往一个简单的赋值语句就同时完成了,声明变量类型,变量定义和关联的过程,那么python的变量到底是怎样完成定义的呢? 动态类型 python使用动态类型和他提供的多态性来提供python语言的简洁灵活的基础.在python中我们是不会声明所使用对象的确切类型的.所谓的python动态类型,就是在程序运行的过程中自动决定对象的类型. 对象.变量和引用 当我们在赋值一个变量时,在python中其实自动做了很多事情. 1.创建变量:当代码第一次赋

python笔记2 python对象的动态类型

Python中的一切都是对象,并且这些对象都是Python的组成部分,即是内置对象,和python一同产生. 从更正式的角度来讲,在P ython中,数据以对象的形式出现一一无论是Py t hon提供的内置对象,还是使用Python或是像C扩展库这 样的扩展语言工具创建的对象.尽管在以后才能确定这一概念,但对象无非是内存中的一部分,包含数值和相关操作的集合. 内置对象 对象类型 例子常量/创建 数字 1234, 3.1415, 3+4j, Decimal. Fraction 字符串 'spam'