【发布时间】:2018-04-05 05:36:36
【问题描述】:
在下面的代码中,当我使用del关键字删除形参a,然后在函数外打印时,传递的列表仍然存在。
lst = [1,2,3]
def func(a):
print lst
lst.append(4) #this is modified as it is by default passed by reference
print lst
print locals
del a # this does not delete the lst! why?
print locals
func(a)
print lst #still exists!
【问题讨论】:
-
因为它删除的是名称,而不是对象。
-
可以,但只在函数内部。
-
你怎么打电话给
func? -
因为你已经定义
func,但你还没有执行它;-)此外,del a从名称中删除afunc的空间,列表对象仍然存在,因为它仍然在 main 的名称空间中被引用。
标签: python pass-by-reference pass-by-value