• 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类型的变量再次赋值,在内存中相当于又创建了一个新的对象,而不再是之前的对象。

  • 相关阅读:
    C语言-结构体内存对齐
    Wireshark-配合tcpdump对Android(安卓)手机抓包
    Python-技巧
    矩阵白化
    非负矩阵分解(3):拉格朗日乘子法求解
    非负矩阵分解(2):算法推导与实现
    非负矩阵分解(1):准则函数及KL散度
    自适应滤波:递归最小二乘
    自适应滤波:最小二乘法
    自适应滤波:奇异值分解SVD
  • 原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/13064088.html
Copyright © 2020-2023  润新知