欢迎光临散文网 会员登陆 & 注册

Python 变量

2021-07-27 17:51 作者:皮卡丘上大学啦  | 我要投稿

(1)变量的数据类型 

 一般而言,变量需要先定义,后使用,变量的数 据类型决定了变量占用多少个字节的内存单元。 

 例:C 语言中的变量,需要在程序编译时确定数 据类型并分配相应的内存单元。这种在使用变量 之前定义其数据类型的语言称为静态类型语言。 

 但Python 语言不同,它是一种动态类型语言。

 Python 是一种动态类型语言。

 这种动态类型语言确定变量的数据类型是在给变 量赋值的时候,对变量的每一次赋值,都可能改 变变量的类型。 

 在Python 中使用变量时不用像C 语言那样先定义 数据类型,而可直接使用。

 例: 

 >>> x=12 #给变量x 赋值 

 >>> y=12.34 #给变量y 赋值 

 >>> z='Hello World' #给变量z 赋值 

 >>> print(x,y,z) 

 12 12.34 Hello World

 可以使用Python 内置函数type()来查询变量的类型。 

 例: 

 >>> type(x) #查看x 的数据类型,x 是整型(int)变量

 (class 'int') 

 >>> type(y) #查看y 的数据类型,y 是浮点型(float) 变量

 (class 'float') 

 >>> type(z) #查看z 的数据类型,z 是字符串型(string) 变量 

 (class 'str')

(2)变量与地址的关系 

 在C 语言中,编译系统要为变量分配内存空间, 当改变变量的值时,改变的是该内存空间的内容, 在程序运行过程中,变量的地址是不再发生改变的,即变量所对应的内存空间是固定的。 

 Python 语言则不同,它采用的是基于值的内存管理方式,不同的值分配不同的内存空间。 当给变量赋值时,Python解释器为该值分配一个 内存空间,而变量则指向这个空间,当变量的值 被改变时,改变的并不是该内存空间的内容,而 是改变了变量的指向关系,使变量指向另一内存 空间。 

 这可理解为,Python 变量并不是某一个固定内存 单元的标识,而是对内存中存储的某个数据的引 用(reference),这个引用是可以动态改变的。

 例:执行下面的赋值语句后,Python 在内存中创建数据12,并 使变量x 指向这个整型数据,因此可以说变量x 现在是整型数据。 

 >>> x=12  >>> print(x) 

 12 

 如果进一步执行下面的赋值语句,则Python 又在内存中创建数 据3.14,并使变量x 改为指向这个浮点型(实型)数据,因此 变量x 的数据类型现在变成了浮点型。

 >>> x=3.14 

 >>> print(x) 

 3.14

 Python 具有自动内存管理功能,对于没有任何变 量指向的值(称为垃圾数据),Python 系统会自 动将其删除。

 例:当x 从指向12 转而指向3.14 后,数据12 就变 成了没有被变量引用的垃圾数据,Python会回收 垃圾数据的内存单元,以便提供给别的数据使用, 这称为垃圾回收(garbage collection)。

 也可以使用del 语句删除一些对象引用。 

 例:

 del x 

 删除x 变量后,如果再使用它,将出现变量未定义错(name 'x' is not defined)。

 Python 的id()函数可以返回对象的内存地址。 

 >>> a=2.0

 >>> b=2.0 

 >>> id(a) 

 35433824 

 >>> id(b)

 35853488 

 >>> a=2 

 >>> b=2 

 >>> id(a) 

 1600796448 

 >>> id(b) 

 1600796448

 Python 解释器会为每个出现的对象分配内存单元, 即使它们的值相等,也会这样。

 例如,执行a=2.0,b=2.0 这两个语句时,会先后 为2.0 这个float 类型对象分配内存单元,然后将a 与b 分别指向这两个对象。所以a 与b 指向的不是同一对象。

 为了提高内存利用效率,对于一些简单的对象, 如一些数值较小(-256~256)的整型(int)对象, Python 采取重用对象内存的办法。

 例:执行a=2,b=2 时,由于2 作为简单的int 类型且数值小,Python 不会两次为其分配内存单元,而是只分配一次,然后将a 与b 同时指向已分配的对象。

 如果赋值是较大的数值,情况就跟前面的一样了。 

 例: 

 >>> a=2222 

 >>> b=2222 

 >>> id(a)

 35853872 

 >>> id(b) 

 35852800

Python 变量的评论 (共 条)

分享到微博请遵守国家法律