讨厌烦人的编码问题''

 s = "alex 是 大 xx"
        abc = id(s)   # 得到内存地址
        print(abc)

        lst = ["大阳哥", "佳琪哥", "小花生", "燃哥"]
        print(id(lst))  # 就是一个内存地址. 毫无意义

        lst = ["周杰伦", "燃哥"]
        lst1 = ["周杰伦", "燃哥"]
        print(id(lst))
        print(id(lst1))

        s = "燃哥"
        s1 = "燃哥"
        # 小数据池. 会对字符串进行缓存, 为了节省内存
        print(id(s))
        print(id(s1))

        tu = ("燃哥", "周杰伦")
        tu1 = ("燃哥", "周杰伦")
        print(id(tu), id(tu1))

        dic = {"a": "b", "c":"d"}
        dic1 = {"a": "b", "c":"d"}
        print(id(dic), id(dic1))

        a = 10
        b = 10
        print(id(a), id(b))

        布尔也有,
        a = True
        b = True
        print(id(a), id(b))

        -5
        a = 257
        b = 257
        print(id(a), id(b))

        a = "小威"
        b = "小威"
        print(id(a), id(b))

        1. id() 查看内存地址
        2. str 有小数据池的

        == is id
        == 判断. 左右两端是否相等和一致, 比较的是内容
        is 判断. 判断的是内存地址  id()的值来判断    内存地址

        lst = ["马化腾", "小威"]
        lst2 = ["马化腾", "小威"]
        print(lst == lst2)  # True
        print(lst is lst2)  # False

        s = "alex"
        print("1111111111")
        print("1111111111")
        print("1111111111")
        print("1111111111")
        print("1111111111")
        print("1111111111")
        print("1111111111")
        print("1111111111")
        print("1111111111")

        s2 = "alex"
        print(s == s2) # True
        print(s is s2)  # True. 小数据池

⼩数据池(常量池): 把我们使⽤过的值存储在⼩数据池中.供其他的变量使⽤.
⼩数据池给数字和字符串使⽤, 其他数据类型不存在.
对于数字: -5~256是会被加到⼩数据池中的. 每次使⽤都是同⼀个对象.
对于字符串:

    1. 如果是纯⽂字信息和下划线. 那么这个对象会被添加到⼩数据池
    2. 如果是带有特殊字符的. 那么不会被添加到⼩数据池. 每次都是新的
    3. 如果是单⼀字⺟*n的情况. 'a'*20, 在20个单位内是可以的. 超过20个单位就不会添加到⼩数据池中

 

posted @ 2018-08-02 18:28  玩蛇少年7372  阅读(86)  评论(0编辑  收藏  举报