Python闭包如何处理变量作用域冲突?
- 内容介绍
- 文章标签
- 相关推荐
本文共计2054个文字,预计阅读时间需要9分钟。
目录+封装+封装中的变量+封装+在我们使用返回函数的时候,由于我们在一个函数中需要返回另一个函数,因此在这个函数中需要重新定义一个函数。这样,就构成了我们的函数。
目录
- 闭包
- 闭包中的变量
闭包
在我们使用返回函数的时候,由于我们在一个函数中需要返回另一个函数,因此,我们在这个函数中就需要重新定义一个函数。而这样,就造成了我们的函数嵌套问题。外面的函数相对于里面的函数而言是外函数(outer function),而里面的我们叫他内函数(inner function)。
def outerFunction(): #外函数 def innerFunction(): #内函数 x = 1 return x return innerFunction #返回值是一个函数 a = outerFunction() print(a)
这里我们打印 a 的值得时候,实际上打印的是我们的返回函数的地址 :
<function outerFunction.<locals>.innerFunction at 0x0000019C278C0E50>
一般情况下,我们在使用函数作为返回值得时候,我们会在内函数中使用我们外函数中的变量,这种情况就会产生一个有意思的事情了。内函数会被返回给外部的其他调用者,而我们的变量是在我们的外函数中定义的。
本文共计2054个文字,预计阅读时间需要9分钟。
目录+封装+封装中的变量+封装+在我们使用返回函数的时候,由于我们在一个函数中需要返回另一个函数,因此在这个函数中需要重新定义一个函数。这样,就构成了我们的函数。
目录
- 闭包
- 闭包中的变量
闭包
在我们使用返回函数的时候,由于我们在一个函数中需要返回另一个函数,因此,我们在这个函数中就需要重新定义一个函数。而这样,就造成了我们的函数嵌套问题。外面的函数相对于里面的函数而言是外函数(outer function),而里面的我们叫他内函数(inner function)。
def outerFunction(): #外函数 def innerFunction(): #内函数 x = 1 return x return innerFunction #返回值是一个函数 a = outerFunction() print(a)
这里我们打印 a 的值得时候,实际上打印的是我们的返回函数的地址 :
<function outerFunction.<locals>.innerFunction at 0x0000019C278C0E50>
一般情况下,我们在使用函数作为返回值得时候,我们会在内函数中使用我们外函数中的变量,这种情况就会产生一个有意思的事情了。内函数会被返回给外部的其他调用者,而我们的变量是在我们的外函数中定义的。

