通过这样的操作,我们在函数执行之后,就会自动释放文件资源。% I* C m! j' R$ u
上下文管理器是如何实现的呢,它的原理就是它的底层实现了__enter__和__exit__方法,这样在执行函数主体之前,我们可以先执行enter方法,主体执行之后,我们再执行exit方法。 + |. c/ V8 a9 H+ u6 Y- B python中通过contextlib装饰器,可以优雅地实现上下文管理器。 6 n; X# \- }0 u* Y5、装饰器) ]9 s. e; r( u. Y6 {3 V
顾名思义,装饰器就是对函数的一个装饰,它在不修改函数主体内容的时候,对函数进行装饰,让它看起来变得不太一样。 V% t* h7 u3 `% ~* J 9 M6 \& k/ g, K2 h8 S python中通过在函数前面加上@符号,可以轻松地对函数进行装饰,很多日志功能还有授权功能,通过装饰器的使用都会变得更加优雅。. w4 R" K! `0 Y, f 6、闭包 9 t/ U' k( v& Z" S6 o 闭包是很多语言都会有的概念,在python中,闭包就是函数的嵌套,不过这不是简单的函数嵌套,它需要满足几个条件。1 u$ M) P Q/ D" d
9 ]0 D1 W2 M6 u
外部函数返回值是内部函数的引用 ; g4 E5 N, h' p( r nonlcoal 修改外部参数 ) r* B( C. q, G. i% q2 K: i python通过闭包的使用,可以更加方便地实现装饰器。6 c+ m: y+ v8 S& M# A' I5 h