tiger吴 发表于 2020-5-20 23:06:03

求助



def funx():
    x=5
    def funy():
      nonlocal x
      x+=1
      return x
    return funy()
a=funx()
print(a())
print(a())

print(a())为什么报错

qiuyouzhi 发表于 2020-5-20 23:09:26

你返回的是一个值,不是函数对象,这个值不能被调用。

Twilight6 发表于 2020-5-20 23:27:40

因为你:
a=funx()
返回的是 6
然后你想print(6())
这样能不报错嘛~

15972441000 发表于 2020-5-20 23:29:18

要用print(a)

15972441000 发表于 2020-5-20 23:30:06

要么就是print(fun(x))

tiger吴 发表于 2020-5-21 20:01:42

Twilight6 发表于 2020-5-20 23:27
因为你:

返回的是 6


我看了这个后对,return fun和return fun()有点懵,上网搜了一下,看完还是不是很明白,能讲下吗

tiger吴 发表于 2020-5-21 20:56:09

qiuyouzhi 发表于 2020-5-20 23:09
你返回的是一个值,不是函数对象,这个值不能被调用。

如我发的截屏图函数定义中返回funy就可以这样写了,为什么懵,讲下这两者的不同呗

qiuyouzhi 发表于 2020-5-21 21:04:47

tiger吴 发表于 2020-5-21 20:56
如我发的截屏图函数定义中返回funy就可以这样写了,为什么懵,讲下这两者的不同呗

带了括号就是调用函数了,结果就是函数的返回值。
但如果没带括号就只是一个单纯的函数对象。

tiger吴 发表于 2020-5-21 21:06:34

qiuyouzhi 发表于 2020-5-21 21:04
带了括号就是调用函数了,结果就是函数的返回值。
但如果没带括号就只是一个单纯的函数对象。

看过这个解释还是不懂,看来得过段时间,学习更深入了再来研究了

qiuyouzhi 发表于 2020-5-21 21:07:14

tiger吴 发表于 2020-5-21 21:06
看过这个解释还是不懂,看来得过段时间,学习更深入了再来研究了

嗯嗯,相信你能理解

均昊山 发表于 2020-5-21 21:29:47

题目没讲能不能运行,只是考你分析print结果,这种选择题试卷比较多
要么就是这样

def funx():
    x=5
    def funy():
      nonlocal x
      x+=1
      return x
    return funy()
print(funx())
print(funx())
print(funx())
页: [1]
查看完整版本: 求助