python一切皆對象(瞭解)
https://blog.csdn.net/LRLZ_Python/article/details/49893103
閉包
閉包:兩個函數的嵌套,外部函數返回內部函數的引用,外部函數必定有參數
def 外部函數(參數):
def 內部函數():
pass
return 內部函數
他跟函數之間的區別:
1.格式兩個函數嵌套
2.閉包外部函數的參數能夠在內存中保持
裝飾器
裝飾器是什麼:閉包加@xxx
裝飾器的做用:在不改變原先的函數值跟調用的方式,添加額外的功能
裝飾器的代碼:
def set_fun(func):
def call_fun(*args,**kwargs):
return func(*args,**kwargs)
return call_fun
@set_fun
def test():
pass
裝飾器結論:
1.裝飾前的函數test,是由func指向的
2.裝飾後的函數test,實際是call_fun
3.裝飾前的test,call_fun,func三者參數一致
4.裝飾器不能去改變函數的調用方式跟返回值(道德)
一個裝飾器一個函數了解
二個裝飾器裝飾一個函數圖解大法
二個裝飾器裝飾器一個函數內存圖瞭解
做業
計算某函數的執行次數,用戶行爲分析
計算某函數的執行時間,優化
下面是某函數:
def test():
print("test")
下面是時間:
import time
time.time()
類裝飾
class 類名(objec):
def __init__(): @類的時候執行
pass
def __call__(): 裝飾後的調用執行
pass
裝飾器傳參
1. 三個函數嵌套,第三層內部包含一個閉包,第三層返回閉包的引用
def set_args(參數):
def set_fun(func):
def call_fun(*args,**kwargs):
return func(*args,**kwargs)
return call_fun
****
return set_fun
@set_args("參數)
def test():
pass