在学完Python
函数那一章节时,很自然的的就会想到Python
中函数传参时传值呢?还是传引用?或者都不是? 我回去看了看我以前做的关于浅拷贝与深拷贝的笔记,其实那里也已经涉及了一些引用相关的问题了。不过在这里还是再进行一次总结吧。
在回答上面的问题之前我们先来看看下面的代码:
代码1:
def foo(var):
var = 2
print(var) #output: 2
a = 1
foo(a)
print(a) #output: 1
恩,看似是值传递
代码2:
def bar(var):
var.append(1)
b = []
print(b) #output:[]
bar(b)
print(b) #output:[1]
应该是引用传递?有点奇怪吧,为了弄清楚这个问题,我们先来了解一下Python
中变量与对象的关系。
一、变量和对象
我们首先要知道Python
中的“变量”与C/C++
中“变量”是不同的。
在C/C++
中,当你初始化一个变量时,就是声明一块存储空间并写入值。相当于把一个值放入一个盒子里:
int a = 1;