python的函数参数传递

In [40]: a = []

In [41]: def func():
   ....:     a.append(1)
   ....:     print a
   ....:     print id(a)
   ....:     

In [42]: id(a)
Out[42]: 140259931856696

In [43]: func()
[1]
140259931856696

In [44]:

1 所有变量为内存中一个对象的引用
2 list,dict等是可以修改的对象
3 当一个引用传递给函数的时候,函数自动复制一份引用,这个函数里的引用和外边的引用没有半毛关系
4 函数内的引用指向的是可变对象,对它的操作就和定位了指针地址一样,在内存里进行修改.
5 对于不可变变量,函数里的id和函数外的id不同

In [44]: a = 1

In [45]: def foo(a):
   ....:     a = 2
   ....:     print id(a)
   ....:     

In [46]: id(a)
Out[46]: 36962648

In [47]: foo(a)
36962624

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 看两个例子: 所有的变量都可以理解是内存中一个对象的“引用”。 这里需要记住的是类型是属于对象的,而不是变量。而对...
    bluescorpio阅读 295评论 0 2
  • 教程总纲:http://www.runoob.com/python/python-tutorial.html 进阶...
    健康哥哥阅读 2,093评论 1 3
  • python的函数参数传递 看两个例子: 所有变量都可以理解为内存中一个对象的“引用”,或者,可以看做C中的vio...
    marvinxu阅读 5,906评论 2 30
  • 个人笔记,方便自己查阅使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik阅读 67,799评论 0 5
  • 在计算机的各种算法中有一种名为“迭代”(Iteration)的算法。这种算法利用了计算机“一个球落地时能计算10亿...
    BryantHe阅读 654评论 0 1