Python中闭包与装饰器的工作机制是怎样的?

2026-05-24 21:320阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计587个文字,预计阅读时间需要3分钟。

Python中闭包与装饰器的工作机制是怎样的?

闭包+闭包从形式上来说是在外部函数中定义内部函数,并且内部函数引用了外部函数的变量。或者说,是将函数的语句和这些语句的执行环境打包在一起。

一、闭包

闭包从形式上来说是在外部函数中定义内部函数,并且内部函数引用了外部函数的变量,此变量叫做自由变量。

或者说是将组成函数的语句和这些语句的执行环境打包在一起。

闭包满足的条件:

必须有一个内嵌函数

内嵌函数必须使用外部函数的变量

外部函数的返回值必须是内嵌函数

def closure(): value = [] def fun(tmp): value.append(tmp) return value return fun cc = closure() cc(0) #[0] 等同于closure(fun(0)) cc(1) #[0,1] cc(2) #[0,1,2]

外部函数closure中有变量value和内部函数fun,并且内部函数fun引用了自由变量value,当执行cc = closure()时,就产生了一个闭包fun,该闭包持有只有变量value,当函数closure生命周期结束后,value依然存在,因为它被闭包引用了。

二、装饰器

装饰器其实就是闭包的应用,只不过其传递的是函数。

阅读全文

本文共计587个文字,预计阅读时间需要3分钟。

Python中闭包与装饰器的工作机制是怎样的?

闭包+闭包从形式上来说是在外部函数中定义内部函数,并且内部函数引用了外部函数的变量。或者说,是将函数的语句和这些语句的执行环境打包在一起。

一、闭包

闭包从形式上来说是在外部函数中定义内部函数,并且内部函数引用了外部函数的变量,此变量叫做自由变量。

或者说是将组成函数的语句和这些语句的执行环境打包在一起。

闭包满足的条件:

必须有一个内嵌函数

内嵌函数必须使用外部函数的变量

外部函数的返回值必须是内嵌函数

def closure(): value = [] def fun(tmp): value.append(tmp) return value return fun cc = closure() cc(0) #[0] 等同于closure(fun(0)) cc(1) #[0,1] cc(2) #[0,1,2]

外部函数closure中有变量value和内部函数fun,并且内部函数fun引用了自由变量value,当执行cc = closure()时,就产生了一个闭包fun,该闭包持有只有变量value,当函数closure生命周期结束后,value依然存在,因为它被闭包引用了。

二、装饰器

装饰器其实就是闭包的应用,只不过其传递的是函数。

阅读全文