• python数据类型转换及变量的缓存机制


    类型转换

    1,强制类型转换

    1.1 number的转换(int,float,bool,complex)

    num1 = 10
    num2 = 10.6
    num3 = True
    num4 = 3 + 4j
    

      

    1.1.1 int强制转换成整型

    res = int(num1)      #10
    res = int(num2)      #10
    res = int(num3)      #1     False =>0
    res = int(num4)      #error
    

      

    1.1.2 float强制转换成浮点型

    res = float(num1)     #10.0
    res = float(num2)     #10.6
    res = float(num3)     #1.0     False =>0.0
    res = float(num4)     #error
    

      

    1.1.3 complex强制转换成复数

    res = complex(num1)    #10 + 0j
    res = complex(num2)    #10.6 + 0j
    res = complex(num3)    #1 + 0j     False =>0j
    res = complex(num4)    #3 + 4j
    

      

    1.1.4 bool强制转换成布尔值

    False:0,0.0,0j,False,"",[],(),set(),{},None
    

      

    1.1.5 总结

    res = int()           #默认创建该数据类型的默认值
    

      

    1.2容器类型的转换(str,list,tuplr,set,dict)

    strvar = '我爱中国'
    listvar = [0,'name',]
    tuplevar = (0.0,'我爱python',[1,5+3j,],)
    setvar = {0,1,2,3,4,5,5,}
    dictvar = {"name":"bajie","age":18,}
    

      

    1.2.1 str (number/container)通吃

    res = str(listvar)
    #将原类型最外层加"listvar"
    print(res1,tpye(res1))
    #repr 原型化输出字符串
    prinr(repr(res1))
    

      

    1.2.2list强制转换成列表

    '''
    str:将每一个字符单独作为一个元素放到列表
    dice:将字典的键作为一个元素放到列表
    其他容器:替换例如(1,) -> [1,]
    '''
    

      

    1.2.3tuple强制转换成元组

    '''
    str:将每一个字符单独作为一个元素放到元组
    dice:将字典的键作为一个元素放到元组
    其他容器:替换例如[1,] -> (1,)
    '''
    

      

    1.2.4set强制转换成集合(无序,去重)

    '''
    str:将每一个字符单独作为一个元素放到集合
    dice:将字典的键作为一个元素放到集合
    其他容器:替换例如[1,2,] -> {2,1,}
    '''
    

      

    1.2.5dict强制转换成字典

    1.2.5.1二级容器(list,tuple,set,dict)
    # 二级容器
    listvar = [1,[2,]]
    setvar = {'name',(1,2,)}
    dictvar = {True:"中国",{"nums":[1,2,3,4,5,6],}}
    # 四级容器
    lisvar = [1,[2,3,["name",[True,]]]]
    

      

    1.2.5.2dici强制转换等长的二级容器

    # 等长(内容器不推荐集合,键值不确定)and TWO元素
    datalist = [[1,2],["name","bajie"]]
    dataset = {(1,2),{"name","bajie"}}
    ​
    res = dict(datalist)          # {1: 2, 'name': 'bajie'}
    res = dict(dataset)           # {1: 2, 'bajie':'name'}
    ​
    # 奇葩写法
    datastr = [[a,1],"b2"]        # {'a': 1, 'b': '2'}
    

      

    2 自动类型转换

    '''
    精度从低到高进行转换 :bool - int - float - complex
    '''
    res1 = True + 1              # 2
    res2 = True + 2j             # 1 + 2j
    res3 = 1 + (2 + 2j)          # 1 + 2j
    res4 = 0.2 + 2j              # 0.2 + 2j
    res5 = False + 1 + 2.5 + 2j  # 3.5 + 2j
    

      

    3变量的缓存机制(针对python3.6前)

    3.1 number部分

    (同一文件,模块)
    #1  整型 (-5 ~ 正无穷 <小数据池:id地址相同>)
    #2  浮点型(非负数)
    #3  bool值相同
    #4  复数类型(只有虚数部分)
    (不同文件,模块)
    #1  整型 (-5 ~ 256 <小数据池:id地址相同>)
    

      

    3.2容器部分

    #1  strvar = "相同字符串"
    #2  空元组
    

      

  • 相关阅读:
    Eclipse查看源码
    让你的Eclipse的智能感知也和Visual Studio 一样快
    关于The serializable class XXX does not declare a static final serialVersionUID field of type long的警告
    C#中Dictionary的用法及用途实例
    不想人工干预地自动执行存储过程?当目的表发生变动时自动执行相应的存储过程?
    再说HelloWorld
    TreeList应用(三) 收藏
    DataTable转换为List<Model>的通用类
    U盘不显示盘符
    如何在 Eclipse 中显示行号
  • 原文地址:https://www.cnblogs.com/zhoulangshunxinyangfan/p/13218993.html
Copyright © 2020-2023  润新知