|
发表于 2023-7-20 15:43:43
|
显示全部楼层
Python 的闭包可以包含多个内部函数,并且这些内部函数可以访问和修改外部函数的局部变量。但是,你的代码中的 `func1` 和 `func2` 是由不同的 `funcInit` 调用生成的,这意味着它们有自己独立的 `x` 和 `y` 变量,所以它们不能相互影响。
如果你希望 `func1` 和 `func2` 能共享同一个 `x` 和 `y`,你可以将 `funcInit` 只调用一次,然后返回一个包含 `funcA` 和 `funcB` 的字典或元组,如下所示:
- def funcInit(x = 0, y = 0):
- def funcA(xA, yA):
- nonlocal x,y
- x += xA
- y += yA
- print("funcA:",x,y)
- return (x, y)
- def funcB(xB, yB):
- nonlocal x,y
- x += xB
- y += yB
- print("funcB:",x,y)
- return (x, y)
- return {'funcA': funcA, 'funcB': funcB}
- funcs = funcInit()
- func1 = funcs['funcA']
- func2 = funcs['funcB']
- func1(1, 1)
- func2(2, 2)
- func1(3, 3)
复制代码
在这个代码中,`func1` 和 `func2` 都是由同一个 `funcInit` 调用返回的,所以它们共享同一个 `x` 和 `y`。
求最佳答案 |
|