python中函数的传值和传引用

在python的函数中,传参不需要指定是否传引用,因为python的参数传递 是采用“传对象引用”这种方式相当于传值和传引用的结合版。

如果函数收到是一个可变对象的引用(例如:字典, 列表等等),就能修改对象的原始值  相当于“传引用”

如果函数收到的一个是不可变对象的引用(例如:数字,字符,,元祖等等),就不能直接修改原始对象的值 相当于“传值”

python一般内部赋值变量的话,都是传个引用变量,和C语言的传地址的概念差不多。可以用id()来查询内存地址

值传递类型如下:

a= 1
def change_integer(a):
        a=a+1
        return a

print change_integer(a)
print a

上面的代码只是将a的值作为参数传递进去,程序执行完之后a的值并未改变

引用传递的类型如下:

b= [1, 2, 3]

def change_list(b):
        b[0]= b[0]+1
        return b

print change_list(b)
print b

而这里将b的地址传递进去之后,程序执行完之后b的值也随之改变。

暂无评论

发表评论