###剛剛遇到裝飾器與閉包問題,這個有個小區分閉包
def count_outter(): L = [] def count_inner(): for i in range (1,5): L.append(i) return L return count_inner a = count_outter() print(a) print(a()) 結果 <function count_outter.<locals>.count_inner at 0x10137a9d8> [1, 2, 3, 4]
def count(): fs = [] for i in range(1, 4): def f(): return i*i fs.append(f) return fs f1, f2, f3 = count() 結果 >>> f1() 9 >>> f2() 9 >>> f3() 9
def count(): def f(j): def g(): return j*j return g fs = [] for i in range(1, 4): fs.append(f(i)) # f(i)馬上被執行,所以i的當前值被傳入f() return fs 結果 >>> f1, f2, f3 = count() >>> f1() 1 >>> f2() 4 >>> f3() 9
import functools def log(func): @functools.wraps(func) def wrapper(*args, **kw): print('call %s():' % func.__name__) return func(*args, **kw) return wrapper
import functools def log(text): def decorator(func): @functools.wraps(func) def wrapper(*args, **kw): print('%s %s():' % (text, func.__name__)) return func(*args, **kw) return wrapper return decorator
####資料來自廖老師的教程app