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

你可能感兴趣的:(python的函数参数传递)