• 06 day小数据池


    1.小数据池,id()
    小数据池针对的是: int ,str,bool-----都是不可变的数据类型
     a.int 类型
    a = 1000
    b = 1000
    print(id(a), id(b))  # 165830000 165830000
    b. 字符串,如果单纯的鞋字符串,几乎都会被缓存
    s1 = "alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事"
    # s2 = "alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事alex昨天上厕所没关门. 韩红冲进去了. 面筋歌出来了. 有故事"
    #
    print(id(s1), id(s2)) # 31222064 31222064
    在py文件中几乎所有的字符串都会缓存,在cmd黑窗口里的几乎都不会缓存,不同的解释器,缓存的机制也不一样
    优点:可以帮我们快速的创建对象. 节省内存
    缺点: 缓存如果过大.响应速度会比较慢
    id()函数可以帮我们查看一个变量的内存地址
    a = 10
    b = 30
    print(id(a))  # 1515545088
    print(id(b))  # 1515545728
    两个对象值一样,但是对应的内存地址是不一样的
    1 = [1,2,3] # 两个对象 内存地址是不一样的
    lst2 = [1,2,3]
    print(id(lst1)) # 166167624
    print(id(lst2)) # 166122376
    2.is 和==的区别 
    == 比较的是数据,外贸的
    is    比较的是内存地址,比较的内在的,如:比较的身份证号
    # lst1 = [1,2,3]
    # lst2 = [1,2,3]
    # # 列表没有小数据池
    # print(id(lst1), id(lst2)) #  166167560 166126408
    # print(lst1 == lst2) # True
    # print(lst1 is lst2) # False
    #
    # s1 = "我叫周润发"
    # s2 = "我叫周润发"
    # print(s1 == s2)
    # print(s1 is s2) # 小数据池
     
    # tu1 = ("周一", "周二")
    # tu2 = ("周一", "周二")
    # print(tu1 is tu2) # 地址不相等 False
    # print(tu1 == tu2) # 内容相等 True
    3.再谈编码
       encode(编码格式)  编码   
       decode(编码格式)  解码
    s = "我今天非常的困" # 21个utf-8
    bs = s.encode("gbk") # 把字符串转化成utf-8格式bytes
    # bytes不是给人看的. 给机器用的
    # 14个字节   gbk
    b'xcexd2xbdxf1xccxecxb7xc7xb3xa3xb5xc4xc0xa7'
    # 21个字节   utf-8
    b'xe6x88x91xe4xbbx8axe5xa4xa9xe9x9dx9exe5xb8xb8xe7x9ax84xe5x9bxb0'
    print(bs)
    utf - 8和 gbk是不能直接转换的,必须使用unicode来转换
    bs = b'xe6x88x91xe4xbbx8axe5xa4xa9xe9x9dx9exe5xb8xb8xe7x9ax84xe5x9bxb0'
    # 把字节转化回字符串
    s = bs.decode("utf-8")
    print(s)
    b'xe6x88x91xe4xbbx8axe5xa4xa9xe9x9dx9exe5xb8xb8xe7x9ax84xe5x9bxb0'
    把这个bytes转化成gbk的bytes
    bs = b'xe6x88x91xe4xbbx8axe5xa4xa9xe9x9dx9exe5xb8xb8xe7x9ax84xe5x9bxb0'
    # 解码
    s = bs.decode("utf-8")
    print(s)
     
    # 编码
    bss = s.encode("gbk")
    print(bss)
    关于bytes,非ascii中的内容,展示的时候都是x..     如果是ascii中的内容,原样的输出.
    name = "alex昨天吃多了"
    bs = name.encode("gbk") # b'alexxd7xf2xccxecxb3xd4xb6xe0xc1xcb'
    print(bs)
     
    bss = name.encode("utf-8") # b'alexxe6x98xa8xe5xa4xa9xe5x90x83xe5xa4x9axe4xbax86'
    print(bss)
     
  • 相关阅读:
    Django动态渲染多层菜单
    python使用pdkdf2加盐密码
    ceil 模块
    python面试总结
    Django 中related_name,"%(app_label)s_%(class)s_related"
    安装zabbix-3.0.3+nginx-1.10.1+php-5.6.22
    Django 权限管理
    python RecursionError: maximum recursion depth exceeded in comparison错误
    django _meta方法
    html 之input标签height设置问题
  • 原文地址:https://www.cnblogs.com/yanghongtao/p/10060852.html
Copyright © 2020-2023  润新知