-
答案 1:
第三次的地址肯定是和其他三次不同的,你可以确认下。这里L默认绑定到一个指定的对象,f外面L是无法访问的,但是默认绑定的这个[]一直存在,下次调用f(a)时,L还会绑定到这个[]上,除非用两个参数调用,L就会绑定到给出的参数上。 -
答案 2:
def f(a, L=[]): L.append(a) print(id(L)) return Lprint (f(1))print f.func_defaultsprint (f(2))print f.func_defaultsprint (f(3,[4,3]))print f.func_defaultsprint (f(5))print f.func_defaults这个代码应该能够说明:L的值在程序调用间是被保存在f.func_defaults这个元组里面了,所以能够在第一第二第四次调用间保存,或者说,类似于C里面的函数内静态变量;至于第三次调用,没有用默认参数。也可以参见这篇文章:effbot.org/zone...
PYTHON 的变量作用域与内存分配是什么?
2012-01-19 19:31:44 来源: 点击:
相关热词搜索:
上一篇:你最讨厌哪个星座?
下一篇:大学生择业,对日外包是否是一个好的选择?