zoukankan      html  css  js  c++  java
  • 2018.8.2 python中is和==的区别

    一、is 和==的区别

     1、is 比较的是左右两边的内存地址, ==比较的是左右两边的值。

     2、id()

           通过id()可以查看一个变量表示的值得内存中的地址。

    s = 'alex'
    s1 = 'alex'
    print(id(s))    #34714768
    print(id(s1))   #34714768
    
    lst = [1,2,4]
    lst1 = [1,2,4]
    print(id(lst))   #37176008
    print(id(lst1))   #38972616
      字符串,部分数字的数据地址是一样的,而列表,元组,字典的数据地址是不一样的,这是因为python中有一个小数据池的存在。

    3、小数据池
    小数据池(常量池):把我们使用过的值存储在小数据池中,供其他的变量使用。
    小数据池给数字和字符串使用,其它数据类型不存在。
    对于数字:
    -5~256是会被加到小数据池中的,每次使用都是同一个对象。
    对于字符串:
    1)如果是纯文字信息和下划线,那么这个对象会被添加到小数据池
    2)如果是带有特殊字符的,那么不会被添加到小数据池,每次都是新的
    3)如果是单一字母*n的情况,a*20,在20个单位内是可以的,超过20个单位就不会添加到小数据池中。

    二、编码和解码
    注意:在python2中默认使用的是ASCII码,不支持中文,如果需要在python2中更改编码需要在文件的开始编写:
    # -*-encoding:utf-8 -*-

              在python3中:内存中使用的是unicode。

    1、编码(encode)

    编码之后的数据类型是bytes类型的数据

    bytes的表现形式:

                  1)英文    编码之后的结果和源字符串一致   如b‘alex’

                  2)中文     编码之后的结果根据编码的不同,编码结果也不同,一个中文的UTF-8是三个               字节,GBK是两个字节

    字符串在传输时转化成bytes=>encode(字符集)来完成

    2、解码(decode)

    在网络传输和存储的时候我们python是保存和存储的bytes类型,那么在对方接收的时候,接收到的也是bytes类型,我们可以使用decode()来进行解码操作,把bytes类型的数据还原回我们熟悉的字符串:

    
    
  • 相关阅读:
    性能测试应用领域
    性能测试---不同视角看性能和相关术语
    Jmeter(二十五)Jmeter之系统函数
    Jmeter(二十四)Jmeter-Question之“加密请求参数”
    Web应用层协议---HTTP
    协议栈CheckList
    数据报表类(BI)项目测试应该如何去啃?
    #单元测试#以karma+mocha+chai 为测试框架的Vue webpack项目(二)
    解决未安装unit测试和jest的Vue项目运行karma start时的错误
    npm run dev运行Vue项目报错:Node Sass does not yet support your current environment
  • 原文地址:https://www.cnblogs.com/fengchong/p/9409703.html
Copyright © 2011-2022 走看看