Python的闭包和装饰器
生活随笔
收集整理的這篇文章主要介紹了
Python的闭包和装饰器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
什么是閉包
python中函數名是一個特殊的變量,它可以作為另一個函數的返回值,而閉包就是一個函數返回另一個函數后,其內部的局部變量還被另一個函數引用。
閉包的作用就是讓一個變量能夠常駐內存。
def count():fs = []for i in range(1, 4):def f():return i*ifs.append(f)return fsf1, f2, f3 = count()>>> f1() 9 >>> f2() 9 >>> f3() 9
裝飾器(decorator)
裝飾器就是為了不修改原函數的定義,并使原函數在運行時動態增加功能的方式,一般來說裝飾器是一個返回函數的高階函數。
def log(func):def wrapper(*args, **kw):print('call %s():' % func.__name__)return func(*args, **kw)return wrapper
裝飾器使用時要借助@語法:
@log def now():print('2019-3-25')
@語法相當于執行了語句:
now = log(now)
注意:
為了使加過裝飾器的函數仍然就有原函數相同的__name__等屬性,可以使用以下方法:
import functoolsdef log(func):@functools.wraps(func)def wrapper(*args, **kw):print('call %s():' % func.__name__)return func(*args, **kw)return wrapper帶參數: import functoolsdef log(text):def decorator(func):@functools.wraps(func)def wrapper(*args, **kw):print('%s %s():' % (text, func.__name__))return func(*args, **kw)return wrapperreturn decorator
?
轉載于:https://www.cnblogs.com/heshike/p/10497933.html
總結
以上是生活随笔為你收集整理的Python的闭包和装饰器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求宿敌歌词。
- 下一篇: 华为荣耀7多少钱啊?