python基礎之閉包函式與裝飾器

2022-08-05 14:39:14 字數 1011 閱讀 6111

閉包函式:

什麼是閉包函式:

閉指的是定義在一個函式內部

包指的是該函式包含對外部作用域(非全域性作用域)名字的引用

def counter():

n=0def incr():

nonlocal n

x=nn+=1

return x

return incr

c=counter()

print(c())

閉包的意義:返回的函式物件,不僅僅是一個函式物件,在該函式外還包裹了一層作用域,這使得,該函式無論在何處呼叫,優先使用自己外層包裹的作用域
裝飾器

1.什麼是裝飾器

就目前來看:裝飾器就是定義一個函式,只不過該函式的功能是用來為其它函式新增額外的功能的

其實:裝飾器本身其實可以是任意可呼叫的物件,

被裝飾的物件也可以是任意可呼叫的物件。

2.為什麼要用裝飾器

軟體維護應該遵循開發封閉原則:

開放封閉原則指的是:

①軟體一旦上線執行後對修改源**是封閉的

②對擴充套件功能是開放的

這就用到了裝飾器

裝飾器的實現必須遵守兩大原則:

①不可修改被裝飾物件的源**

②不可修改被裝飾物件的呼叫方式

import time

def timmer(func):

start_time=time.time()

res=func(*args,**kwargs)

stop_time=time.time()

print('run time is %s' %(stop_time-start_time))

return res

@timmer

def foo():

time.sleep(3)

print('from foo')

foo()

其實@代表語法糖

@timmer 表示foo = timmer(foo)

python基礎之閉包與迭代器

一 閉包 1 寫法 在外層函式中宣告一個變數,在記憶體函式使用或者返回這個變數。 這個結構叫閉包。 def fun1 a 10 deffun2 print a return fun2 這種結構就叫做閉包 2 作用 1 保護變數 2 使變數常駐記憶體 closure 有東西,就是閉包 none就不是閉包 ...

python 裝飾器前之閉包和裝飾器

裝飾器 一, 例如 vim yue7 py deffoo print fool foo 執行 root localhost python p...