Python中对函数传参的理解

在python使用函数传参时,函数对于传入参数的操作

传入参数时,我把函数的操作看作拿走了两样东西,参数(的地址)和参数内容(的地址)
对于参数的操作一般有两种办法:
对参数直接使用=进行赋值,这种赋值相当于临时绑定了一个内容给参数名,而没有实际操作到真正的参数内容,在离开函数后,参数会找回自己的内容,函数外的参数没有发生任何变化。
而对参数使用一些参数自身数据类型的函数,或者只更改参数内部的数据,不使其发生整体的指向改变(可以理解为指针)操作就作用在了参数的内容上,这样函数结束后,参数的实际内容也发生了改变。
可以借用一段代码来验证这个思路:
def foo(flist):
flist = [1]
print(flist)
print(id(flist))

def foo_1(flist):
flist[0] = 1
print(flist)
print(id(flist))

flist_0 = [0]
print('-' * 10)
print(flist_0)
print(id(flist_0))
print('-' * 10)
foo(flist_0)
print('-' * 10)
print(flist_0)
print(id(flist_0))
print('-' * 10)
foo_1(flist_0)
print('-' * 10)
print(flist_0)
print(id(flist_0))

image

posted on 2021-02-06 18:16  希音心  阅读(138)  评论(0)    收藏  举报