首页 > 教育学习 > 为什么 > PYTHON 的变量作用域与内存分配是什么?

PYTHON 的变量作用域与内存分配是什么?
2012-01-19 19:31:44   来源:   点击:

    PYTHON 的变量作用域与内存分配是什么?def f(a, L=[]): L.append(a) print(id(L)) return Lprint (f(1))print (f(2))print (f(3,[4,3]))print (f(5))提问: 1、L和a的生命周期?什么时候销毁呢? 2、看样子是L在f调用完以后没有销毁。这个程序的运行结果显示出四次L的内存地址都是一样,为什么第三次是[4,3,3],第四次变成[1,2,5]

    2 个答案

    • 答案 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...

相关热词搜索:

上一篇:你最讨厌哪个星座?
下一篇:大学生择业,对日外包是否是一个好的选择?