第六天 is 和 == 的区别, 编码的问题

一.id()函数

  Id()函数 :通过id()查看一个变量表示的值在内存中的地址

   

   id值相同是应为在程序运行中产生了数据池,会对字符串和整数进行缓存, 为了节省内存。但其他类型(列表,数组,字典)不存在

对于数字:
  -5 —— 256是会被加到小数据池中的. 每次使用都是同一个对象.
对于字符串:
  1. 如果是纯文字信息和下划线. 那么这个对象会被添加到小数据池
  2. 如果是带有特殊字符的. 那么不会被添加到小数据池. 每次都是新的
  3. 如果是单一字母*n的情况. 'a'*20, 在20个单位内是可以的. 超过20个单位就不会添加到小数据池中
注意:
    (一般情况下): 在py⽂文件中. 如果你只是单纯的定义一个字符串. 那么一般情况下都是会被添加到小数据池中的.
我们可以这样认为: 在使用字符串的时候, python会帮我们把字符串进行缓存, 在下次使用的时候直接指向这个字符串即可.
可以节省很多内存.
is 和 id的关系:     
    is比较的就是id()计算出来的结果. 由于id是帮我们查看某数据(对象) 的内存地址. 那么is
比较
    的就是数据(对象)的内存地址.最终我们通过is可以查看两个变量使⽤的是否是同一个对象.

二.is 和 == 区别

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

    is       : 判决的是内存地址是否相等  用id()的值来判断

   

三,编码的补充

  想要储存,必须先编码 

  1. python2中默认使用的是ASCII码,所以不支持中文,如果需要在python2中更改编码。

    Python2 转换为python3的编码,在python2前面加  -*- encoding:utf-8 -*-  

   2.python3中:内存中使用的unicode

  encode()   编码:获取到的是编码之后的结果。编码之后的内容是bytes类数据类型

                  英文:编码之后的结果是英文本身

                  中文:编码之后UTF – 8下,一个中文3个字节

  Decode()   解码:把bytes数据类型编程我们熟悉的字符串

  

  

 
 


原文地址:https://www.cnblogs.com/mwhylj/p/9304714.html