python中传值和传地址问题

2018-11-22 08:45:18来源:博客园 阅读 ()

新老客户大回馈,云服务器低至5折

在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

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


标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:python-相互转换(和部分功能)知识整理

下一篇:根据python上下文管理,写一个在读文件内容前后自动打开关闭文件