#裝飾器的本質 就是函式,功能是為其他函式新增附加功能#原則:
# 不修改被修飾函式的源**,不修改被修飾函式的呼叫方式
# import time
# def cal(l):
# start_time=time.time()
# res=0
# for i in l:
# time .sleep(0.1)
# res+=i
# stop_time=time.time()
# print('函式的執行時間是%s'%(stop_time-start_time))
# return res
# print(cal(range(100)))
#裝飾器=高階函式+函式巢狀+閉包
import time
def foo():
time.sleep(0.2)
print('彭亮')
#不修改源** 不修改foo呼叫方式
def timer (func):
start_time=time.time()
func()
stop_time=time.time()
print('執行時間%s'%(stop_time-start_time))
return func
foo=timer(foo)
foo()
#裝飾器本身就是函式# 裝飾器就是閉包函式的一種應用場景
# 二 什麼是裝飾器
## 裝飾器他人的器具,本身可以是任意可呼叫物件,被裝飾者也可以是任意可呼叫物件。
# 強調裝飾器的原則:1 不修改被裝飾物件的源** 2 不修改被裝飾物件的呼叫方式
# 裝飾器的目標:在遵循1和2的前提下,為被裝飾物件新增上新功能
def deco(obj):
print('**********=',obj)
obj.x=1
obj.y=2
obj.z=3
return obj
### @deco是全域性變數
# @deco # 裝飾器的原理就是 執行了deco 目的是:test=deco(test) deco把test傳入進去同時得到乙個(返回值 傳給func) 再賦給test
# def test():
# print('test函式執行')
# print("+"*20)
# @deco #就是相當於 foo=deco(foo)
# class foo:
# pass
# print(foo.__dict__)
# @ 不僅可以在函式前面加 還可以在類前面加
print("-------------------"*30)
# @deco
def test(): # 一切皆物件 test 也是物件
print('test')
test.x=1
test.y=2
print(test.__dict__)
python 裝飾器基本原理
關於python中裝飾器的定義,我們這裡參考廖雪峰大神的python3教程中的定義 在某個函式 執行期間,在不更改該函式的功能下,動態給該函式新增功能的方式,我們稱之為 裝飾器 從定義中看出,這個裝飾器勢必要在實現中傳入原函式,並在其功能中使原函式功能不受影響。由此我們想到的一種實現裝飾器的方法就是...
mysql的基本原理 Mysql 基本原理
mysql 基本原理 mysql是一種關聯式資料庫管理系統,關聯式資料庫將資料儲存在不同的表中,而不是將所有資料放在乙個大倉庫內,這樣就增加了速度並提高了靈活性 ysql是資料庫登入命令 uroot預設超級使用者登入 p 預設沒密碼 中寫密碼 mysqladmin uroot password 12...
pwm控制的基本原理 PWM控制的基本原理
pwm pulse width modulation 控制 脈衝寬度調製技術,通過對一系列脈衝的寬度進行調製,來等效地獲得所需要波形 含形狀和幅值 pwm控制技術在逆變電路中應用最廣,應用的逆變電路絕大部分是pwm型,pwm控制技術正是有賴於在逆 變電路中的應用,才確定了它在電力電子技術中的重要地位...