• 我的python菜鸟之路4


    内存相关

    • 练习1的输出的结果有666(内部修改)
      • 因为v1、v2指定的是同一处内存
    • 练习2赋值而不修改内存地址
      • 重新赋值结果不变,修改内部元素结果改变
    练习1
    v1=[11,22,33]
    v2=v1
    v1.append(666)
    print(v2)
    结果为[11,22,33,666]
    
    练习2
    v1= [11,22,33]
    v2=v1
    v1=[1,2,3]
    print(v2)
    结果为[11,22,33]
    
    练习3
    v = [1,2,3]
    value = [1,2,v]
    v = [4,5,6]
    print(value)
    结果为:[1,2,[1,2,3]]
    
    练习4
    v = [1,2,3]
    value=[1,2,v]
    value[2]=666
    print(v)
    结果为[1,2,3]
    
    • print(id())
      • 查看内存地址

    python的小数据池

    • python为了优化性能,认为常用数字(-5~256)或者字符串使用频率较高,便不再开辟新的内存
      • 列表、字典、集合不会存在此现象
    v1=1
    v2=1
    id(vi) = id(v2)
    

    问题:== 与 is的区别

    • == 是值相当
    • is 是内存地址相等

    深浅拷贝

    • 浅拷贝:只拷贝数据的第一层

    • 深拷贝:拷贝嵌套层次的所有的数据(可变)

    • 对于字符串、布尔类型、整型深浅拷贝是没有区别的

    v1 = [1,2,3,4,[1,2,3]]
    import copy
    v2 = copy.copy(v1)
    print(id(v1),id(v2))
    print(id(v1[4]),id(v2[4]))
    60886984 60920712
    30792744 30792744
    v1 = [1,2,3,4,[1,2,3]]
    import copy
    v2 = copy.deepcopy(v1)
    print(id(v1),id(v2))
    print(id(v1[4]),id(v2[4]))
    60985416 60886984
    60985640 60985672
    
    • 可以看出浅拷贝只拷贝最外层,也就是说最外层地址不一样,而内部元素的地址是一样的
    • 深拷贝拷贝嵌套内的,在无嵌套时,深浅拷贝是一样的
    • 对于元组而言,如果没有可变元素,地址不变,里面有可变类型,其所嵌套的地址改变
    • 字典中,键可以直接循环,值不可以
    info = {'name':'王钢蛋','sex':'女'}
    if i  in info:
    print('在')
    
    • 判断”王钢蛋“是否在字典的值中
    flag = True
    info = {'name':'王钢蛋','sex':'女'}
    for i in info.values():
        if '王钢蛋'== i:
            flag = True
            break
    if flag:
        print('在')
    else:
        print('不再')
    
    • 判断一个字符串是不是集合
    v1 = {'杨大大',,"常大大","李太白"}
    if type(v1)== set:
        print("这是集合")
    else:
        print("这不是集合")
    
    
    • 输出的结果均不变,注意与列表区分开
    v1 = "yang"
    v2 = v1
    v1.upper()
    print(v2,v1)
    
  • 相关阅读:
    Spring Cloud-Eureka的一些概念
    Spring Cloud-Eureka的基本架构
    Spring Cloud-分布式事务
    Spring Cloud-熔断机制
    SpringBoot下载文件
    redis 指定db库导入导出数据
    python基础:重新认识装饰器
    源码解析:django的CSRF认证
    源码解析:数据批量导入bukl_crete()原理
    剑指 Offer 13. 机器人的运动范围
  • 原文地址:https://www.cnblogs.com/yangzilaing/p/13138732.html
Copyright © 2020-2023  润新知