asa616628217 发表于 2022-5-11 09:55:01

内嵌函数的疑惑

def a():
    print('函数a正在调用')
    def b():
      print(6)
      return 8
    b()
    return 10


>>>a()
>>>函数a正在调用
      6
      10

为什么函数a的返回值10出现,而b的返回值8不出现

青出于蓝 发表于 2022-5-11 09:58:31

这是交互式模式
a()=print(a())
但b的返回值没有被打印啊
这里只是 b() 而不是 print(b())

青出于蓝 发表于 2022-5-11 09:59:16

def a():
    print('函数a正在调用')
    def b():
      print(6)
      return 8
    print(b())
    return 10

豆嘉木 发表于 2022-5-11 10:01:59

因为你调用的是a(),a的返回值在交互模式下会自动显示,比如你输入1+1,交互模式会自动回给你一个2,如果在编辑模式,a函数的返回值10也是不会显示的因为你没有使用这个返回值(比如打印就是使用)而内嵌函数返回值只有在使用的时候才会展示,a函数没有调用所以没有调用
打字不易!兄弟给我个最佳答案哈!!!谢了!

Twilight6 发表于 2022-5-11 10:04:06


return 关键字是设置函数的返回值,不负责将返回值打印到输出窗口上

而 print 函数的作用就是将 print 函数中的参数打印到控制台上

而在交互模式中,调用函数会自动打印其返回值,返回值若为 None 会打印一个空行

在编辑器运行代码则不会自动打印函数的返回值,要搭配 print 函数才能将其返回值打印输出

asa616628217 发表于 2022-5-11 12:51:05

Twilight6 发表于 2022-5-11 10:04
return 关键字是设置函数的返回值,不负责将返回值打印到输出窗口上

而 print 函数的作用就是将 print ...

老师你好 问一下 上边那个函数里边有方法调用b()函数吗?

Twilight6 发表于 2022-5-11 12:52:46

asa616628217 发表于 2022-5-11 12:51
老师你好 问一下 上边那个函数里边有方法调用b()函数吗?


都加上 print 就行:

def a():
    print('函数a正在调用')
    def b():
      print(6)
      return 8
    print(b())
    return 10

print(a())

asa616628217 发表于 2022-5-11 13:16:01

Twilight6 发表于 2022-5-11 12:52
都加上 print 就行:

谢谢老师!
页: [1]
查看完整版本: 内嵌函数的疑惑