• python基础小知识,is和==的区别,编码和解码


    1、is和==的区别

    1)id() 通过id()我们可以查看到一个变量表示的值在内存中的地址

    >>> s1 = "Tanxu"
    >>> s2 = "Tanxu"
    >>> id(s1)
    49754608
    >>> id(s2)
    49754608
    >>> lst1 = [1,2,3]
    >>> lst2 = [1,2,3]
    >>> id(lst1)
    49806088
    >>> id(lst2)
    49807112
    >>> tu1 = (1,2)
    >>> tu2 = (1,2)
    >>> id(tu1)
    49840328
    >>> id(tu2)
    49097800
    >>> id(("哈哈哈哈哈哈"*10))
    48426160
    >>> id(("哈哈哈哈哈哈"*10))
    48426160
    #我们发现 字符串的地址是相同的,而列表和元组的地址是不同的

     小数据池(常量池):把我们使用过得值存储在小数据池中,供其他的变量使用。小数据池给数字和字符串使用,其他数据类型不存在。

      对于数字:-5~256是会被加到小数据池中的,每次使用都是同一个对象
      对于字符串:A、如果是纯文字信息和下划线,那么这个对象会被添加到小数据池
      B、如果是带有特殊字符的,那么不会被添加到小数据池中,每次都是新的
      C、如果是单一字母*n的情况,'a'*20 ,在20个单位是可以的,超过20个单位就不会添加到小数据池中

     注意:(在一般情况下),在py文件中,如果你只是单纯的定义一个字符串,那么一般情况下都是会被添加到小数据池中的。我们可以这样认为:在使用
      字符串的时候,python会帮我们把字符串进行缓存,在下次使用的时候直接指向这个字符串即可,可以节省很多内存。

    2)is 和 == 的区别:

      ==:判断左右是否相等和一致,比较的是内容

      is:判断的是内存地址,id()的值来判断,判断的是内存地址

    >>> print(s1 == s2)
    True
    >>> print(lst1 == lst2)
    True
    >>> print(s1 is s2)
    True
    >>> print(lst1 is lst2)
    False
    

    2、编码和解码encode()和decode()

     1)encode()  编码 获取到的是编码之后的结果,bytes

     2)decode()  解码 把bytes编程我们熟悉的字符串【用什么编码的,需要用什么解码】

      1、encode()编码之后的内容是bytes类型的数据

        1) 默认把字符串编码成utf-8的形式

        2) 英文:编码之后结果还是英文

        3) 中文:编码之后utf-8,一个中文占3个字节

        4) encode(“GBK”)编码成GBK的形式,一个中文占2个字节

      2、decode(“GBK”) 从别人那里读取到的是GBK编码格式,需要在括号中注明,解码之后是字符串

      3、各种编码格式之间相互转化

  • 相关阅读:
    Linux strip
    有趣的BUG
    GDB watch std::string size
    Redis Cluster Lua
    Double Buffer
    Yarn架构
    天池公交客流预测比赛
    hashmap,ConcurrentHashMap与hashtable的区别
    fail-fast和fail-safe
    常见机器学习算法优缺点
  • 原文地址:https://www.cnblogs.com/tanxu05/p/9901845.html
Copyright © 2020-2023  润新知