Python全棧之路Day20
阿新 • • 發佈:2017-11-13
函數對象 port err pytho data foo http title itl
一. 上節課復習
二. 裝飾器
三. 裝飾器補充
作業
今日總結
初次編輯2017年10月26日,星期四
一. 上節課復習
二. 裝飾器
三. 裝飾器補充
作業
今日總結
摘要
引用:Alex
- 裝飾器
- 無參裝飾器
- 有參裝飾器
一. 上節課復習
- 名稱空間與作用域
- 內置名稱空間
- 全局名稱空間
- 局部名稱空間
- 全局作用域:內置名稱空間、全局名稱空間
- 局部作用域:局部名稱空間
- 函數嵌套與嵌套作用域
- 函數對象
- 閉包
二. 裝飾器
- 為什麽要用裝飾器及開放封閉原則
- 什麽是裝飾器
- 無參裝飾器的簡單實現
import time def timmer(func): def wrapper(): start_time = time.time() func() stop_time = time.time() print(‘run time is %s ‘ % (stop_time - start_time)) return wrapper @timmer #index=timmer(index) def index(): time.sleep(3) print(‘welcome to oldboy‘) index() #wrapper()
- 無參裝飾器修正part1
import time def timmer(func): def foo(*args,**kwargs): start_time = time.time() func(*args,**kwargs) stop_time = time.time() print(‘run time is %s‘ % (stop_time - start_time)) return foo @timmer #index = timmer(index) def index(name): time.sleep(2) print(‘welconme to my home! %s‘ % name) @timmer #auth = timmer(auth) def auth(name,passwd): print(name,passwd) index(‘egon‘) #foo(‘egon‘) auth(‘liuyang‘,‘123‘) #foo(‘liuyang‘,‘123‘)
- 無參裝飾器修正part2
import time def timmer(func): def foo(*args,**kwargs): start_time = time.time() res = func(*args,**kwargs) stop_time = time.time() print(‘run time is %s ‘% (stop_time - start_time)) return res return foo @timmer # my_max = timmer(my_max) def my_max(x,y): res = x if x > y else y return res res = my_max(2, 3) #foo(2, 3) print(res)
- 有參裝飾器
def auth2(auth_type):
def auth(func):
def foo(*args,**kwargs):
name = input(‘username: ‘).strip()
passwd = input(‘passwd:‘)
if auth_type == ‘sql‘:
if name == ‘liuyang‘ and passwd == ‘123‘:
print(‘auth successful‘)
res = func(*args,**kwargs)
return res
else:
print(‘auth error‘)
else:
print(‘還沒學會‘)
return foo
return auth
@auth2(auth_type = ‘sql‘) #index = auth(index)
def index():
print(‘welcome to index page‘)
index() #foo()
三. 裝飾器補充
- 函數加多個無參裝飾器
@ccc
@bbb
@aaa
def func():
pass
func=ccc(bbb(aaa(func)))
- 函數加多個有參裝飾器
@ccc(‘c‘)
@bbb(‘b‘)
@aaa(‘a‘)
def func():
pass
func=ccc(‘c‘)(bbb(‘b‘)(aaa(‘a‘)(func)))
作業
- 無
今日總結
- 待整理
Python全棧之路Day20