zoukankan      html  css  js  c++  java
  • is 和 == 区别 id()函数

    一. 回顾上周所有内容
    一. python基础
    1. Python是一门解释型. 弱类型语言
    2. print("内容", "内容", end=" ") 打印语句
    3. 变量: 程序运行过程中产生的中间值. 存储在内存中.供后面的程序调用
    4. 变量的数据类型:
    int, 整数
    str, 字符串
    bool, True,False
    5. 命名规则:
    1. 由数字,字母,下划线组成
    2. 不能是纯数字或者数字开头
    3. 不能是关键字
    4. 不能太长
    5. 要有意义
    6. 不要用中文
    7. 区分大小写
    8. 推荐使用驼峰和下划线命名
    6. input() 用户输入
    7. if 判断
    if 条件:
    代码块
    else:
    代码块

    if 条件:
    代码块
    elif 条件2:
    代码块
    ..
    else:
    二. while循环
    while 条件:
    循环体
    else:
    代码块
    流程:
    判断条件是否为真. 如果真.执行循环体. 再次判断条件是否真. ....直到条件为假. 执行else. 退出循环

    break 直接打断循环.
    continue 停止当前本次循环. 继续执行下一次循环

    格式化输出:
    %s 字符串
    %d 数字

    运算符:
    逻辑运算
    1. and. 两端同时为真. 结果才是真.
    2. or 或者. 两端有一个是真. 结果就是真
    3. not 取反.

    () => not => and => or
    x or y
    如果x非零, x, 否则 y

    编码:
    1. ASCII. 8bit, 1byte
    2. GBK, 16bit, 2byte
    3. unicode, 32bit,4byte
    4. UTF-8, 英文:8bit, 1byte, 欧洲: 16bit, 2byte, 中文: 24bit, 3byte

    3. 基本数据类型
    1. int 数字. bit_length() 二进制长度
    3. bool 空:False, 非空:True
    2. str, 字符串不可变
    索引切片: 由0开始
    [起始位置: 结束位置: 步长]
    操作:
    1. upper() 变成大写
    2. strip() 去掉空格(两端)
    3. replace() 替换
    4. split() 切割
    5. startswith() 以xxx开头(判断)
    6. find() 找xxx字符串在原字符串中出现的索引位置. 找不到返回-1
    7. count() 数数
    8. format() 格式化输出
    9. len() 求长度
    4. 列表:
    由[]表示
    有索引和切片
    常用操作:
    增加:append(), insert(), extend()
    删除:pop() remove() del, clear()
    修改:索引切片修改
    查询:
    for 变量 in 可迭代对象:
    循环体
    else:

    操作:
    sort(reverse=True) 排序
    reverse() 翻转
    len() 长度
    count() 数数

    元组:
    tuple, 只读列表, 由()组成. 不可变的
    索引和切片. for循环


    解构, 解包
    a, b = 1, 2

    range(10) 0-9
    range(5, 10) 5-9
    range(5,10,3) 5,8

    5. dict 字典
    由{}表示. 存储key:value 键值对. 根据key来计算hash值.找到对应的内存地址.
    key必须是可hash的. 不可变的. int, str, 元组, bool

    操作:
    增加: dict[key] = value
    setdefault(key, value)
    删除: pop(key), del , popitems(), clear()
    修改: dict[key] = value
    查询:dict[key], get(key, 默认值),
    setdefault() 先执行新增那个流程. 然后.获取到key对应的值

    常规操作:
    keys() 获取所有的key.返回的像个列表
    values() 获取所有value
    items() 获取所有的key,value.装成元组. 返回列表[(key,value), (key,value)]

    通过items()获取的是k,v
    for k,v in dict.items():

    直接循环遍历. 拿到的是key
    for k in dict:

    二. 作业
    三. 今日主要内容
    1. is 和 == 区别
    id()函数
    == 判断两边的值
    is 判断内存地址

    s = "alex 是 大 xx"
    abc = id(s)   # 得到内存地址
    print(abc)
    
    lst = ["大阳哥", "佳琪哥", "小花生", "燃哥"]
    print(id(lst))  # 就是一个内存地址. 毫无意义
    
    
    lst = ["周杰伦", "燃哥"]
    lst1 = ["周杰伦", "燃哥"]
    print(id(lst))
    print(id(lst1))
    
    s = "燃哥"
    s1 = "燃哥"
    # 小数据池. 会对字符串进行缓存, 为了节省内存
    print(id(s))
    print(id(s1))
    
    tu = ("燃哥", "周杰伦")
    tu1 = ("燃哥", "周杰伦")
    print(id(tu), id(tu1))
    
    dic = {"a": "b", "c":"d"}
    dic1 = {"a": "b", "c":"d"}
    print(id(dic), id(dic1))
    
    a = 10
    b = 10
    print(id(a), id(b))
    
    布尔也有,
    a = True
    b = True
    print(id(a), id(b))
    
    -5
    a = 257
    b = 257
    print(id(a), id(b))
    
    a = "小威"
    b = "小威"
    print(id(a), id(b))
    
    1. id() 查看内存地址
    2. str 有小数据池的
    
    == is id
    == 判断. 左右两端是否相等和一致, 比较的是内容
    is 判断. 判断的是内存地址  id()的值来判断    内存地址
    
    lst = ["马化腾", "小威"]
    lst2 = ["马化腾", "小威"]
    print(lst == lst2)  # True
    print(lst is lst2)  # False
    
    
    s = "alex"
    print("1111111111")
    print("1111111111")
    print("1111111111")
    print("1111111111")
    print("1111111111")
    print("1111111111")
    print("1111111111")
    print("1111111111")
    print("1111111111")
    
    s2 = "alex"
    print(s == s2) # True
    print(s is s2)  # True. 小数据池
    

      


    回顾编码:
    1. ASCII: 英文, 特殊字符, 数字, 8bit, 1byte
    2. GBK: 中文 16bit, 2byte. 兼容ASCII
    3. unicode: 万国码, 32bit 4byte. 兼容ASCII
    4. UTF-8: 长度可变的unicode. 英文:8bit, 欧洲:16bit, 中文:24bit 3byte

    python2 只能用ASCII
    python3 有unicode, 默认的编码就是unicode
    内存里用的是unicode. 硬盘和网络传输用的是utf-8或者GBK

    2. encode() 编码. 获取到的是编码之后的结果. bytes
    3. decode() 解码. 把bytes编程我们熟悉的字符串

    s = "alex马"
    想要存储.必须进行编码
    
    encode() 编码之后的内容是bytes类型的数据
    
    30个字节 10个字. 每个字3个字节
    b'xe6x9dx8exe5x98x89xe8xafx9axe7x9ax84xe5x84xbfxe5xadx90xe8xa2xabxe7xbbx91xe6x9exb6xe4xbax86'
    bs = s.encode("UTF-8")   # 把字符串编码成UTF-8的形式
    print(bs)
    
    英文:编码之后的结果是英文本身
    中文:编码之后UTF-8 下. 一个中文3个字节
    
    
    s = "饿了么"
    bs = s.encode("GBK")    # b'xb6xf6xc1xcbxc3xb4' GBK 一个中文:2个字节
    print(bs)
    
    s = "中"
    print(s.encode("utf-8"))
    print(s.encode("GBK"))
    
    decode()解码
    
    bs = b'xb6xf6xc1xcbxc3xb4'    # 从别人那里读到的   GBK
    
    # 编程人认识的东西
    s = bs.decode("GBK")    # 解码之后是字符串, 用什么编码就用什么解码
    print(s)
    
    GBK => utf-8
    bs = b'xb6xf6xc1xcbxc3xb4'
    # 先解码成unicode字符串
    s = bs.decode("GBK")
    # 在把字符串编码成UTF-8
    bss = s.encode("UTF-8")
    print(bss)
    

      

  • 相关阅读:
    hrbust1279
    U盘快捷方式中毒处理办法
    计算几何
    poj1113
    凸包模版
    STL容器
    HDU2048
    HDU2047
    HDU2045
    python面试题总结
  • 原文地址:https://www.cnblogs.com/duanpengpeng/p/9284381.html
Copyright © 2011-2022 走看看