Python-变量类型

1.Python变量类型

变量存储在内存中的值。这就意味着在创建变量时会在内存中开辟一个空间。

基于变量的数据类型,解释器会分配指定内存,并决定什么数据可以被存储在内存中。

因此,变量可以指定不同的数据类型,这些变量可以存储整数,小数或字符。

 


2.变量赋值

Python 中的变量赋值不需要类型声明。

每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。

每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

等号(=)用来给变量赋值。

等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:

a = 100
b = 0.1
c = 1000.00

print(a,b,c)

-----结果-----
100 0.1 1000.0

ps:你会发现Python可以自动识别变量的类型,但是可以从b和c的结果可以看出,Python默认浮点型为小数点的后一位

3.多个变量赋值

Python允许你同时为多个变量赋值。例如:

a = b = c = 1,2,"hello world!"
print(a,b,c)

-----结果------
(1, 2, 'hello world!') (1, 2, 'hello world!') (1, 2, 'hello world!')

a,b,c = 1,2,"hello world!"
print(a,b,c)
-----结果------
1 2 hello world!

4.标准数据类型

Python有五个标准的数据类型:

  • Numbers(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Dictionary(字典)

4.1.Numbers(数字)

Python支持四种不同的数字类型:

  • int(有符号整型)
  • long(长整型[也可以代表八进制和十六进制])
  • float(浮点型)
  • complex(复数)

数字数据类型用于存储数值。

他们是不可改变的数据类型,这意味着改变数字数据类型会分配一个新的对象。

当你指定一个值时,Number对象就会被创建:

var1 = 100
address1 = id(var1)
var2 = 100
address2 = id(var2)

print("var1'address="+ str(address1))
print("var2'address="+ str(address2))

-------结果-------
var1'address=8791242541216
var2'address=8791242541216


var1 = 200
address1 = id(var1)
var2 = 200
address2 = id(var2)

print("var1'address="+ str(address1))
print("var2'address="+ str(address2))

-------结果-------
var1'address=8791242544416
var2'address=8791242544416


var1 = 200
address1 = id(var1)
var2 = 200
address2 = id(var2)
var3 = var2
address3 = id(var3)

print("var1'address="+ str(address1))
print("var2'address="+ str(address2))
print("var3'address="+ str(address3))

-------结果-------
var1'address=8791246542112
var2'address=8791246542112
var3'address=8791246542112

上面的id()是地址函数,从上面的代码可以看出var1和var2都赋值100时,他们的地址都是一样的,可以说明var1和var2引用了同一个对象,即100,也就是说内存中对于1只占用了一个地址,而不管有多少个引用指向了它,都只有一个地址值,只是有一个引用计数会记录指向这个地址的引用到底有几个而已

我们进行var1=200赋值时,发现var1的地址值变了,虽然还是var1这个引用,但是其地址值却变化了,后面的var2=200以及var3=var2,使得var1、var2和var3都引用了同一个对象,即200,所以地址值都是一样的。当var1和var2都被赋值200后,100这个对象已经没有引用指向它了,所以100这个对象占用的内存,即8791242541216地址要被“垃圾回收”,即100这个对象在内存中已经不存在了。

之所以称为不可变数据类型,这里的不可变可以理解为var1引用的地址处的值是不能被改变的,也就是8791242541216地址处的值在没被垃圾回收之前一直都是100,不能改变,如果要把var1赋值为200,那么只能将var1引用的地址从8791242541216变为8791246542112,相当于var1= 200这个赋值又创建了一个对象,即200这个对象,然后var1、var2、var3都引用了这个对象,所以int这个数据类型是不可变的,如果想对int类型的变量再次赋值,在内存中相当于又创建了一个新的对象,而不再是之前的对象。

 

posted @ 2020-06-08 13:46  追风的小蚂蚁  阅读(280)  评论(0编辑  收藏  举报