標籤:

裝飾器和閉包概念問題總結

#裝飾器

1.創建一個閉包(終級版)

2.@xx裝飾你要裝飾的函數

#萬能裝飾器

def set_fun(func):

def call_fun(*args,**kwargs):

return func(*args,**kwargs)

return call_fun

@set_fun

def test():

pass

#裝飾器在不改變原先的函數代碼的情況下,給原先的函數添加額外的功能(原則)

#裝飾器不會去改變原函數的參數及結果

#裝飾前的函數(test),是由func指向的

#裝飾後的函數(test),是指向了call_fun

#閉包

1. 兩個函數的嵌套,外部函數返回內部函數的引用,外部函數一定有參數

2. 外部參數可以在內存中存留,跟函數的區別

def 外部函數(data):

def 內部函數():

pass

return 內部函數

#作業:

計算某函數的執行次數,用戶行為分析

計算某函數的執行時間,優化

def test():? print("test")

import time

time.time()

#兩個裝飾器裝飾一個函數(會使用)

![](images/2.png)

#了解一個裝飾器裝飾一個函數

![](images/1.png)

#了解兩個裝飾器裝飾一個函數

![](images/3.png)


推薦閱讀:

小心了!小白無法入門Python你不可避免的4個陷阱
Python 中 pandas read_csv 問題?
python非同步asyncio模塊的使用
from __future__ import print_function用法
怎樣將一個24的n次方複雜度的計算優化?

TAG:Python |