seanweis 发表于 2020-4-13 17:52:27

关于作用域的问题疑惑

代码如下:
def d(L=[]):
    print(L)
    if L == []:
      print('empty')
      L = []
    L.append('0')
    return L

def e(L=[]):
    print(L)
    if L == []:
      print('empty')
      #L = []
    L.append('0')
    return L

函数d重复调用结果如下:
>>> d()
[]
empty
['0']
>>> d()
[]
empty
['0']
>>>
函数e重复调用结果如下:
>>> e()
[]
empty
['0']
>>> e()
['0']
['0', '0']
>>>
我知道之所以结果会不一样,应该跟其作用域有关系,但是对其机制还是理解的不是很清楚,希望有大神能够给详细解答一下,谢谢!
刚注册没多久,没多少鱼币,就不悬赏了哈


BngThea 发表于 2020-4-13 19:03:09

不是作用域的问题,是python内部为了节省资源会保存上一次的容器,你在e函数中可以试着打印id(L)
页: [1]
查看完整版本: 关于作用域的问题疑惑