• Python基础篇(is和==)


    python基础篇(is,==,):

    一.is和==的区别

      1.id()

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

    s = 'alex'
    print(id(s)) # 4326667072
    s = "alex"
    print(id(s)) # 4326667072
    lst = [1, 2, 4]
    print(id(lst)) # 4326685768
    lst1 = [1, 2, 4]
    print(id(lst1)) # 4326684360
    # 我们发现. 字符串的数据地址是⼀样的. ⽽ 列表的数据地址是不⼀样的.
    tup = (1, 2)
    tup1 = (1, 2)
    print(id(tup))
    print(id(tup1))

      小数据池(常量池):把我们使用过的值存到小数据池中,以便后期供其他变量使用,小数据池可以给数字,字符串使用,其他数据类型不存在.

    对于数字-5~256是会被加到小数据池中,每次使用都是同一个对象.

    对于字符串:

          1.如果是纯文字信息和下划线,那么这个对象会被添加到小数据池

          2.如果是带有特殊字符的,那么不会被添加到小数据中,每次都是新的

          3. 如果是单一字母*n的情况. 'a'*20, 在20个单位内是可以的. 超过20个单位就不会添加 到⼩数据池中

    注意(一般情况下):在python文件中.如果你只是单纯的定义一个字符串.那么一般情况下都会被添加到小数据池中,我们可以这样认为:在使用字符串的时候,

    Python会帮我们把字符串进行缓存,在下次使用的时候直接指向这儿字符串即可,可以节省很多内存这个问题不要纠结,因为官方没有给出完美的结论和定论

    所以只能是自己摸索. 以下内容摘自官网中关于id()的描述

    说了这么多. 这个id()和is有什么关系呢. 注意. is比较的就是id()计算出来的结果. 由于id是帮我 们查看某数据(对象) 的内存地址. 那么is比较的就是数据(对象)的内存地址. 最终我们通过is可以查看两个变量使⽤的是否是同一个对象.

      ==双等表示的是判断是否相等,这个上等比较的是具体的值而不是地址

    name = "哈哈"
    name1 = "哈哈"
    print(name == name1) # True
    print(name1 is name) # True 原因是有数据池的存在 导致两个变量指向的是同一个对象
    l1 = [1, 2, 3]
    l2 = [1, 2, 3]
    print(l1 == l2) # True, 值是是样的
    print(l1 is l2) # False, 值是假的

        总结:==比较的值,is是比较的地址

  • 相关阅读:
    SQL语句大全
    软件设计方法
    统计在线的用户
    解放web程序员的输入验证
    OUTLOOK菜单类
    在asp.net 2.0中结合母板页meta,Tiele重置
    微软自带AJAX的用法
    在asp.net 2.0中发送邮件
    js编写的语法高亮引擎
    有关模版MasterPage的问题
  • 原文地址:https://www.cnblogs.com/yaozhiqiang/p/9151252.html
Copyright © 2020-2023  润新知