1. 程式人生 > >python之閉包函數 裝飾器 作業

python之閉包函數 裝飾器 作業

word bold 多個 格式 color ebe 優先 時間 函數返回

一:編寫函數,(函數執行的時間是隨機的)

import random
def t():
time.sleep(random.randrange(1,3))
print(‘hello‘)

二:編寫裝飾器,為函數加上統計時間的功能

import time
import random
def timebe(func):
def wrapper(*args,**kwargs):
start_time=time.time()
res = func(*args, **kwargs)
end_time=time.time()
print(‘運行時間是:%s‘ % (end_time - start_time))

return res
return wrapper

@timebe
def t():
time.sleep(random.randrange(2,3))
print(‘hello‘)


三:編寫裝飾器,為函數加上認證的功能

def ident(func):
def wrapper(*args,**kwargs):
name=input(‘name:‘)
pwd=input(‘pwd: ‘)
if name==‘zuo‘ and pwd==‘123‘:
print(‘correct‘)
return func(*args, **kwargs)
else:
print(‘wrong‘)
return wrapper


@ident
def t():
print(‘hello‘)



四:編寫裝飾器,為多個函數加上認證的功能(用戶的賬號密碼來源於文件),要求登錄成功一次,後續的函數都無需再輸入用戶名和密碼
註意:從文件中讀出字符串形式的字典,可以用eval(‘{"name":"egon","password":"123"}‘)轉成字典格式



五:編寫下載網頁內容的函數,要求功能是:用戶傳入一個url,函數返回下載頁面的結果

六:為題目五編寫裝飾器,實現緩存網頁內容的功能:
具體:實現下載的頁面存放於文件中,如果文件內有值(文件大小不為0),就優先從文件中讀取網頁內容,否則,就去下載,然後存到文件中

七:還記得我們用函數對象的概念,制作一個函數字典的操作嗎,來來來,我們有更高大上的做法,在文件開頭聲明一個空字典,然後在每個函數前加上裝飾器,
完成自動添加到字典的操作

python之閉包函數 裝飾器 作業