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

  • 相关阅读:
    Hibernate save, saveOrUpdate, persist, merge, update 区别
    Eclipse下maven使用嵌入式(Embedded)Neo4j创建Hello World项目
    Neo4j批量插入(Batch Insertion)
    嵌入式(Embedded)Neo4j数据库访问方法
    Neo4j 查询已经创建的索引与约束
    Neo4j 两种索引Legacy Index与Schema Index区别
    spring data jpa hibernate jpa 三者之间的关系
    maven web project打包为war包,目录结构的变化
    创建一个maven web project
    Linux下部署solrCloud
  • 原文地址:https://www.cnblogs.com/zhuifeng-mayi/p/13064088.html
Copyright © 2011-2022 走看看