当前位置:   article > 正文

浅谈python中调用函数对实参原始值的影响_同样都是引用,为什么python的引用不会影响原值

同样都是引用,为什么python的引用不会影响原值

在python中,对象在调用函数时,是否改变原有值得问题中,并无传值或引用的概念,而是要看实参是可变对象还是不可变对象。

1.对于不可变对象(如字符串),调用函数进行运算后,会生成一个新的对象(id()不同),实参原始对象则不会被改变

2.对于可变对象(如列表),调用函数进行运算后,仍对原始对象进行操作(id()相同),因此,实参原始对象会被改变是

3.可变对象包括:列表、字典、set、自定义类,调用函数后会改变实参原始对象的值

4.不可变对象包括:字符串,整型,浮点型,元组、frozenset,range,调用函数后不会实参改变原始对象的值

  1. def f_tring(n):
  2. n=n+"s"
  3. print("函数内,对n操作后得id(n)",id(n))
  4. return n
  5. def f_list(list):
  6. print("函数内,对n操作后得id(list)",id(list))
  7. return list.append('end')
  8. if __name__=="__main__":
  9. print("----------测试不可变对象:string类型数据")
  10. n="a"
  11. print('调用函数之前,n=',n)
  12. print("调用函数之前得id(n)",id(n))
  13. print('调用函数f_tring(n):',f_tring(n))
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/261353?site
推荐阅读
相关标签
  

闽ICP备14008679号