九华 发表于 2021-7-31 15:40:00

闭包问题

def fun1(a):
    print('this is fun1')
    def fun2(b=10):
      nonlocal a
      print('this is fun2')
      a=a+b
      return a
    return fun2
i=fun1(5)
i()


执行完上面代码后输出结果为
this is fun1
this is fun2

为什么结果没有返回a+b的答案呢?

青出于蓝 发表于 2021-7-31 15:50:39

def fun1(a):
    print('this is fun1')
    def fun2(b=10):
      nonlocal a
      print('this is fun2')
      a=a+b
      return a
    return fun2
i=fun1(5)
print(i())

青出于蓝 发表于 2021-7-31 15:51:16

def fun1(a):
    print('this is fun1')
    def fun2(b=10):
      nonlocal a
      print('this is fun2')
      a=a+b
      print(a)
    return fun2
i=fun1(5)
i()

青出于蓝 发表于 2021-7-31 15:52:18

函数fun1里面的函数fun2仅仅是返回了a的值,想要打印a还要加一个print,如2#
或者在fun2里面把返回值去掉,直接打印,如3#
欢迎追问

九华 发表于 2021-7-31 15:56:27

青出于蓝 发表于 2021-7-31 15:52
函数fun1里面的函数fun2仅仅是返回了a的值,想要打印a还要加一个print,如2#
或者在fun2里面把返回值去掉 ...

谢谢大佬,懂了懂了{:5_105:}
页: [1]
查看完整版本: 闭包问题