Nate_2020 发表于 2021-12-28 13:51:59

嵌套函数里无法使用上级函数中的变量

如下函数, 为什么 def b() 可以直接调用上一级函数def a()里的x,y,
但如果想把x,y放到一个函数中进行值的改变却不可以?
报以下错误:
    xy = one(x,y)
UnboundLocalError: local variable 'x' referenced before assignment

def one(n1,n2):
    return
   

def a():
    x = 10
    y = 20

    def b():
      xy = one(x,y)
      x = xy
      y = xy
      print(x,y)


    b()


a()

jackz007 发表于 2021-12-28 14:14:25

def one(n1,n2):
    return
   

def a():
    x = 10
    y = 20

    def b():
      nonlocal x , y    # 添加此句
      xy = one(x , y)
      x = xy
      y = xy
      print(x,y)


    b()


a()
页: [1]
查看完整版本: 嵌套函数里无法使用上级函数中的变量