python动态类型

python是动态语言。不需要事先声明变量类型,同一变量可以被赋值为不同的对象类型。

变量、对象、引用

  • 变量创建

    python的变量不需要声明,当代码第一次给其赋值时就创建它。

  • 变量赋值

    举例说明,赋值语句 “a = 3”。一般而言赋值过程如下:

    1. 创建被赋值的对象,即在内存中开辟一块空间,用于保存对象的信息。本例来说是一个整数对象3.
    2. 如果变量名之前没有被定义过,创建变量名,’a’。如果变量名存在,则跳过。
    3. 建立变量名和被赋值对象之间的引用。引用类似于c语言的指针。

      以上过程适用于所有的变量赋值。

  • 变量类型

    变量本身不包含任何类型约束信息,类型的概念存在于它引用的对象中而不是变量名中。

  • 变量使用

    当变量出现在表达式中时,它会马上被引用的对象所代替。所有的变量在使用前必须被赋值,使用未赋值的变量会引起“NameError”异常(变量必须先被创建才能使用)

  • 对象

    每个对象有两个标准的头部信息:标识对象类型的类型标志符,一个引用计数器。一个对象可能同时被多个变量名引用,引用计数器记录了对象被引用的次数。对于大部分的对象而言,当引用计数器的值为0时,对象所在的内存空间会被回收。

  • 共享引用

    多个变量名同时引用同一个对象。

python的内置核心对象类型

不可变类型

不可变类型,对象一旦创建不可修改。整数类型 int 、浮点数类型 float、复数类型 complex、字符串类型 str、元祖类型 tuple 、集合类型 set,都属于不可变类型。下面通过变量赋值的过程理解型不可变对象:

a = 1 #建立变量a到对象1的引用
b = a #建立变量b到对象1的引用, 共享引用
a = 2 #因为int类型的对象1不可修改,所以新建对象2,并且建立变量a到它的引用
      #现在变量a、b分别引用不同的对象。

过程如图:

可变类型

可变类型指对象可原地修改的类型。比较典型的:列表类型 list、字典类型 dict。

以list为例,list是任意对象的有序集合,如下图所示:

list对象中每个元素都是一个对象引用。通俗理解,list对象的元素有点类似变量,同样可更改。

时间: 2024-10-18 10:13:15

python动态类型的相关文章

Python 动态类型

Python 动态类型 1.Python中,类型是在运行过程中自动决定的,并不需要提前在代码中声明. 2.所有变量必须在使用前明确的赋值,否则将会产生错误.#例:NameError: name 'a' is not defined 3.赋值语句 a=3 代表了:创建一个对象代表3:创建一个变量a:将变量与新的对象3相连.实际上是到对象内存空间的一个指针! 4.上面的第3条可翻译为:变量是一个系统表的元素,拥有指向对象的链接的空间:对象是分配的一块内存,有足够空间来表示他们所代表的值:引用是自动形

【Python】python动态类型

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

Python学习笔记(五)Python动态类型和引用

动态类型以及由他提供的多态性是Python语言简洁性.灵活性的基础.Python中,类型是在运行过程中自动决定的,没有必要事先声明变量.记住,Python中变量和对象是划分开来的,这样才能能清楚的理解动态类型.再记住,赋值生成的是变量到对象的引用,而非拷贝. 1,单个变量引用 以a=3为例说明Python中单个变量引用的处理过程, 1)创建一个对象代表值3,此处是整型数字对象 2)如果变量a还没有被创建的话,创建变量a(已创建则无此步骤) 3)将变量与新的对象3连接 实际效果如下图所示,变量a和

Python动态类型简介

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

python——动态类型

1.变量,对象,引用 变量是一个系统表的元素,拥有指向对象的连接的空间: 对象是分配的一块内存: 引用是自动形成的从变量到对象的指针: 类型属于对象,而不是变量 a=3;  变量a变成对象3的一个引用,内存中以指针形式实现 2. 对象的垃圾收集 垃圾收集:每个对象中保持一个计数器,计数器记录了当前指向该对象的引用的书目:一旦计数器设置为0,则对象的

Python的动态类型

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

python学习笔记17(动态类型)

动态类型 在我们接触的对象中,有一类特殊的对象,是用于存储数据的,常见的该类对象包括各种数字,字符串,表,词典.在C语言中,我们称这样一些数据结构为变量,而在Python中,这些是对象. 对象是储存在内存中的实体.但我们并不能直接接触到该对象.我们在程序中写的对象名,只是指向这一对象的引用(reference). 引用和对象分离,是动态类型的核心.引用可以随时指向一个新的对象: a = 3 a = 'python' 第一个语句中,3是储存在内存中的一个整数对象,通过赋值,引用a指向对象3. 第二

Python<9>动态类型简介

动态类型以及它提供的多态性,无疑是Python语言简洁性和灵活性的基础. 一.变量 <1>变量创建 一个变量a,当代码第一次给它赋值时就创建了它,之后的赋值将会改变已创建的变量名的值. <2>变量类型 变量永远不会有任何的和它关联的类型信息或约束.变量原本是通用的,它只是在一个特定的时间点,简单的引用了 一下特定的对象而已. <3>变量使用 当变量出现在表达式中,它会马上被当前引用的对象所替代(对象是有类型的).此外所有的变量必须在使用前明确的 赋值,使用未赋值的变量会

Python进阶09 动态类型

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 谢谢TeaEra, 猫咪cat 动态类型(dynamic typing)是Python另一个重要的核心概念.我们之前说过,Python的变量(variable)不需要声明,而在赋值时,变量可以重新赋值为任意值.这些都与动态类型的概念相关. 动态类型 在我们接触的对象中,有一类特殊的对象,是用于存储数据的.常见的该类对象包括各种数字,字符串,表,词典.在C语言中,我们称这样一些数据