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、各种编码格式之间相互转化

上一篇:四种加载React数据的技术对比(Meteor 转)


下一篇:PLSQL_PLSQL读和写CSV文件方式(案例)