LEEFEI571 发表于 2024-8-30 23:57:23

关于闭包中的内部函数是否只能以return语句结束的疑问

闭包结构中含有多层函数嵌套,其中内层函数是不是只能通过return结束?

好奇内层函数除了return语句结束外,还有没有可能通过其他方式结束,如print,或者内层函数通过()执行等?请各位大神指定!!!

FishC 发表于 2024-8-30 23:57:44

在闭包中,内层函数并不一定只能通过 `return` 语句结束。实际上,内层函数可以通过多种方式结束,包括但不限于 `return`、`print`、`pass` 等。下面是一些示例来说明这一点:

1. **使用 `return` 语句结束**:
   def outer_function():
       def inner_function():
         return "Hello, World!"
       return inner_function

2. **使用 `print` 语句结束**:
   def outer_function():
       def inner_function():
         print("Hello, World!")
       return inner_function

3. **使用 `pass` 语句结束**:
   def outer_function():
       def inner_function():
         pass
       return inner_function

4. **内层函数通过 `()` 执行**:
   def outer_function():
       def inner_function():
         print("Hello, World!")
       inner_function()
       return inner_function

在这些示例中,内层函数可以通过不同的方式结束,而不仅仅是 `return` 语句。关键在于内层函数的逻辑和你希望它完成的任务。希望这些示例能帮助你理解闭包中内层函数的多种结束方式。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

jackz007 发表于 2024-8-31 00:32:22

本帖最后由 jackz007 于 2024-8-31 01:02 编辑

   1、外层函数必须使用 return 返回内层函数的名称,这是因为如果不这样,在闭包函数的外部就无法访问到其内层函数。
   2、内层函数是否使用 return 结束完全取决于需要,如果这个函数需要反馈给调用者一个结果,那就使用 return 返回,否则,就不需要。

【有 return 实例】:
def fib() :
    a , b = 0 , 0
    def inner() :
      nonlocal a , b
      a , b = b , a + b
      if not b : b += 1
      return a               # 每次调用闭包函数需要取得斐波那契数列新的数据,所以,内层函数需要返回计算结果。
    return inner               # 外层函数必须返回内层函数的名称

fx = fib()
x = []
for _ in range(20):
    x . append(fx())         # 每次调用闭包函数需要取得斐波那契数列新的数据,所以,内层函数需要返回计算结果。
print(x)

运行实况:
D:\\Python>python x.py


D:\\Python>

【无 reuturn 实例】:
def foo() :
    c = 0
    def inner() :
      nonlocal c
      c += 1
      print("%2d. 欢迎来到 FishC" % c)
    return inner               # 外层函数必须返回内层函数的名称

ex = foo()
for _ in range(20):
    ex()
运行实况:
D:\\Python>python x.py
1. 欢迎来到 FishC
2. 欢迎来到 FishC
3. 欢迎来到 FishC
4. 欢迎来到 FishC
5. 欢迎来到 FishC
6. 欢迎来到 FishC
7. 欢迎来到 FishC
8. 欢迎来到 FishC
9. 欢迎来到 FishC
10. 欢迎来到 FishC
11. 欢迎来到 FishC
12. 欢迎来到 FishC
13. 欢迎来到 FishC
14. 欢迎来到 FishC
15. 欢迎来到 FishC
16. 欢迎来到 FishC
17. 欢迎来到 FishC
18. 欢迎来到 FishC
19. 欢迎来到 FishC
20. 欢迎来到 FishC

D:\\Python>
页: [1]
查看完整版本: 关于闭包中的内部函数是否只能以return语句结束的疑问