|  | 
 
 发表于 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`。
 
 求最佳答案
  | 
 |