为何第一种无法输出内容呢,但是第二种可以。这个闭包操作学的很蒙
希望可以被解决,在下为新手,谢谢
在 Python 中,闭包(Closure)是一种特殊的函数,它记住了其外部作用域中的变量,即使外部函数已经执行完毕。闭包通常用于创建具有私有数据(即外部函数中定义的变量)的函数。
在你提供的图片中,展示了两种使用闭包的例子,但只给出了代码的一部分,没有完整的上下文(如函数调用等),不过我可以根据通常的情况来解释为何一种能输出而另一种不能。
假设两种情况的简化代码如下:
第一种情况(可能无法输出):
def outer():
x = "Hello"
def inner():
# 如果x在这里被修改或者未正确使用,则不会输出
print(x) # 如果x在这里不可见或已被修改,则不会输出
# 注意:这里没有调用inner(),只是定义了它
outer() # 只会执行outer(),不会调用inner()
第二种情况(能输出):
def outer():
x = "Hello"
def inner():
print(x) # x是可见的,因为inner是闭包
return x
return inner # 注意这里返回了inner函数
my_closure = outer() # 调用outer(),返回inner函数
my_closure() # 现在调用inner(),输出"Hello"
在第二种情况中,outer()
被调用并返回了 inner
函数(即闭包),然后 inner()
被调用,从而输出了 "Hello"。在第一种情况中,inner()
根本就没有被调用,因此不会输出任何内容。
8 回答4.6k 阅读✓ 已解决
6 回答3.3k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
4 回答2.7k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
这跟闭包不闭包没关系。第一种你返回的是一个函数、可你也没调用这个函数啊,当然没有输出了。
要想有输出你也得是: