1. 程式人生 > >python學習第十一天 裝飾器

python學習第十一天 裝飾器

老板 wrapper clas int 過程 pos pri python 獲取

1.作業講解

# 2、寫函數,接收n個數字,求這些參數數字的和。
def sum_func(*args):
total = 0
for i in args:
total += i
return total
print(sum_func(1,2,3,8,23,6))

# 3、讀代碼,回答:代碼中,打印出來的值a,b,c分別是什麽?為什麽?
# a=10
# b=20
# def test5(a,b):
# print(a,b)
# c = test5(b,a)
# print(c)



# 4、讀代碼,回答:代碼中,打印出來的值a,b,c分別是什麽?為什麽?
# a=10
# b=20
# def test5(a,b):
# a=3
# b=5
# print(a,b)
# c = test5(b,a)
# print(c)

2.裝飾器
# 裝飾器形成的過程 : 最簡單的裝飾器 有返回值的 有一個參數 萬能參數
# 裝飾器的作用
# 原則 :開放封閉原則
# 語法糖 :@
# 裝飾器的固定模式

#不懂技術


import time
# print(time.time()) # 獲取當前時間
# time.sleep(10) #讓程序在執行到這個位置的時候停一會兒


# def timmer(f): #裝飾器函數
# def inner():
# start = time.time()
# ret = f() #被裝飾的函數
# end = time.time()
# print(end - start)
# return ret
# return inner
#
# @timmer #語法糖 @裝飾器函數名
# def func(): #被裝飾的函數
# time.sleep(0.01)
# print(‘老板好同事好大家好‘)
# return ‘新年好‘
# # func = timmer(func)
# ret = func() #inner()
# print(ret)
# 裝飾器的作用 —— 不想修改函數的調用方式 但是還想在原來的函數前後添加功能
# timmer就是一個裝飾器函數,只是對一個函數 有一些裝飾作用

# 原則: 開放封閉原則
# 開放 : 對擴展是開放的
# 封閉 : 對修改是封閉的

# 封版

# def outer():
# def inner():
# return ‘inner‘
# inner()
#
# outer()

#裝飾帶參數函數的裝飾器
# def timmer(f): #裝飾器函數
# def inner(*args,**kwargs):
# #(1,2) /(1)
# start = time.time()
# ret = f(*args,**kwargs) #f(1,2) #被裝飾的函數
# end = time.time()
# print(end - start)
# return ret
# return inner
#
# @timmer #語法糖 @裝飾器函數名
# def func(a,b): #被裝飾的函數
# time.sleep(0.01)
# print(‘老板好同事好大家好‘,a,b)
# return ‘新年好‘
#
# @timmer #語法糖 @裝飾器函數名
# def func1(a): #被裝飾的函數
# time.sleep(0.01)
# print(‘老板好同事好大家好‘,a)
# return ‘新年好‘
# # func = timmer(func)
# ret = func(1,2) #inner()
# ret = func(1,b = 2) #inner()
# print(ret)

# def wrapper(f): #裝飾器函數,f是被裝飾的函數
# def inner(*args,**kwargs):
# ‘‘‘在被裝飾函數之前要做的事‘‘‘
# ret = f(*args,**kwargs) #被裝飾的函數
# ‘‘‘在被裝飾函數之後要做的事‘‘‘
# return ret
# return inner
#
# @wrapper #語法糖 @裝飾器函數名
# def func(a,b): #被裝飾的函數
# time.sleep(0.01)
# print(‘老板好同事好大家好‘,a,b)
# return ‘新年好‘
# print(func(1,2))

# def wrapper():
# def inner():
# pass
# return inner

# def wrapper(func): #qqxing
# def inner(*args,**kwargs):
# ret = func(*args,**kwargs) #被裝飾的函數
# return ret
# return inner
#
# @wrapper #qqxing = wrapper(qqxing)
# def qqxing():
# print(123)
#
# ret = qqxing() #inner

#
# 講解元旦作業 擴展裝飾器




python學習第十一天 裝飾器