• python中传值和传地址问题


    在python中,还没有对这个知识点有一个详细的定义,很模糊的说明了,通过下面代码,可以观察出来,什么时候传的是值,什么时候传的是地址

    有时候会发现自己的数据发生变化,可能就是这个原因,python的创作者,在定义的时候,并没有像java/c++深挖,比较模糊的说明了,这样一个关于值和地址的问题,也有我的知识不够宽广,没有涉及到这方面知识,如有偏差,敬请指正!

    # 传值和传地址的区别
    # 对于简单的数值,采用传值操作,即在函数内对参数的操作不影响外面的变量
    # 对于复杂变量,采用传地址操作,此时函数内的参数和外部变量是同一份内容,
    # 任何地方对此内容的更改都影响另外的变量或参数的使用
    
    def a(n):
        n[2] = 300
        print(n)
        return None
    
    def b(n):
        n += 100
        print(n)
        return None
    
    an = [1,5,6,5,7,9]
    bn = 5
    
    
    print(an)
    a(an)
    print(an)
    
    
    print(bn)
    b(bn)
    print(bn)

    结果:

    [1, 5, 6, 5, 7, 9]
    [1, 5, 300, 5, 7, 9]
    [1, 5, 300, 5, 7, 9]
    5
    105
    5

    通过结果观察:
    对于简单的数值,采用的是传值操作,即在函数内对参数的操作不影响外面的变量
    对于复杂的变量,采用传地址操作,此时函数内的参数和外部变量是同一份内容,任何地方对此内容的更改都会影响另外的变量或参数的使用
    小伙伴们,注意啦!


  • 相关阅读:
    序列化流与反序列化流
    io流之Properties类
    io流之转换流与缓冲流
    Io流之File概述(递归/字节流/字符流)
    基本数据类型包装/System类/Math类/Arrays类
    Date类概述与Calendar类概念
    String类型概述
    20180926 小小插件 (弹窗)
    20180901 文件加载 错误处理 错误的触发
    20180828 优化留言板 功能(增加 删除 修改 查看)!
  • 原文地址:https://www.cnblogs.com/cswzp/p/9995945.html
Copyright © 2020-2023  润新知