Python學習第十一課 裝飾器

2022-09-03 11:54:10 字數 3600 閱讀 8166

'''

高階函式定義:

1、函式接受的引數是乙個函式名

2、函式的返回值是乙個函式名

3、滿足上述條件任意乙個,都可稱之為高階函式

'''#

函式接受的引數是乙個函式名的情況下,要改變函式的呼叫方式

deffoo():

time.sleep(2)

print("

憨憨你好")

deftest(func):

print

(func)

start_time=time.time()

func()

stop_time=time.time()

print('

函式的執行時間是%s

' %(stop_time-start_time))

test(foo)

#修改了函式的呼叫方式

#函式的返回值是乙個函式名,此時不需要改變函式呼叫方式

deffoo():

print('

from the foo')

deftest(func):

return

func

foo =test(foo)

foo()

deffoo():

time.sleep(3)

print('

來自foo')

#完成裝飾器新增功能

#該寫法多執行了一次 所以高階函式無法滿足裝飾器運用

deftimmer(func):

start_time =time.time()

func()

stop_time =time.time()

print('

函式執行時間%s

' % (stop_time -start_time))

return

func

foo =timmer(foo)

foo()

def

father(name):

print('

from father %s

' %name)

defson():

print('

他的爸爸是%s

' %name)

defgrandson():

print('

他的爺爺是%s

' %name)

grandson()

son()

father('憨憨

')

#

列印1+2+3+..+100 並且列印出執行時間

import

time

defcal(l):

start_time =time.time()

res =0

for i in

l: time.sleep(0.01)

res +=i

stop_time =time.time()

print("

函式的執行時間是%s

" % (stop_time -start_time))

return

resprint(cal(range(100)))

def timmer(func): #

計算函式執行時間功能

start_time =time.time()

res = func(*args, **kwargs)

stop_time =time.time()

print('

函式執行的時間是%s

' % (stop_time -start_time))

return

res

return

@timmer

#在不動原函式的基礎上 為該函式加上其他功能

defcal(f):

res =0

for i in

f: time.sleep(0.1)

res +=i

return

resprint(cal(range(100)))

def

timmer(func):

def start_time =time.time()

func()

#執行的就是test

stop_time =time.time()

print('

執行時間是%s

' % (stop_time -start_time))

return

@timmer

#相當於 test=timmer(test)

deftest():

time.sleep(3)

print('

test已經執行')

test()

#

將下列方法加上驗證裝飾器

current_dic =

user_list =[,,

]def

yanzheng(func):

if current_dic['

username

'] and current_dic['

login']:

res = func(*args, **kwargs)

return

res username = input('

輸入使用者名稱:

').strip()

pwd = input('

輸入密碼:

').strip()

for user_dic in

user_list:

if username == user_dic['

name

'] and pwd == user_dic['

pwd'

]: current_dic[

'username

'] =username

current_dic[

'login

'] =true

res = func(*args, **kwargs)

return

res

else

:

print('

輸入的使用者名稱和密碼有誤')

return

@yanzheng

defindex():

print('

歡迎來到京東**')

@yanzheng

defjiaose(name):

print('

進入%s頁面

' %(name))

@yanzheng

defshopping_car(name):

print('

%s購物車裡面有[%s,%s,%s]

' % (name, '

飛機', '

火箭', '娃娃'

))index()

jiaose(

'管理員')

shopping_car(

'產品經理

')

Linux第十一課

apache 一 虛擬主機 apache可基於ip位址 主機網域名稱 埠號實現提供多個 同時為外部提供訪問服務的技術。使用網域名稱,要在 etc hosts檔案中做本地強制解析 基於埠號,要注意新增用於監聽埠的引數 二 訪問控制 基於源主機名 源ip位址 或源主機上的瀏覽器特徵等資訊對 上的資源繼續...

第十一課 文法

數量的說法 1 計算物品時的說法。11以上用數字計算。2 量詞 計算人 物時,或要表示某種數量時,物件不同使用的量詞也會不同。量詞直接放在數字後面使用。人 計算人數。但是,乙個人時說 人 兩個人時用 人 人 要唸 臺 計算機械,或汽車,自行車等交通工具時使用。枚 計算薄或扁平的物品。紙張,襯衫,盤子...

第十一課C 異常

異常的機制,格式如下 try 後面可以抓取很多和catch 編譯器會根據 引數來進行匹配 catch char s catch int a catch 表示剩下全部的情況 include include using namespace std classa voidk void voidkk voi...