python二十三 裝飾器

2021-08-22 18:10:14 字數 2361 閱讀 7988

import time

# 裝飾器的架子

def timer(func):

start_time = time.time()

func()

stop_time = time.time()

print("函式執行時間%s"%(stop_time-start_time))

def test():

time.sleep(2)

print("函式執行完畢..")

語法糖語法

import time

# 裝飾器的架子

def timer(func):

start_time = time.time()

res = func()

stop_time = time.time()

print("函式執行時間%s"%(stop_time-start_time))

return res

@timer # @timer相當於 test = timer(test)

def test():

time.sleep(2)

print("函式執行完畢..")

return "test()"

res = test()

print(res)

def decorator(func):

uname = input("請輸入使用者名稱:")

pwd = input("請輸入密碼:")

if (uname=="張飛" and pwd == "123"):

res = func(*args, **kwargs)

return res

else:

print("使用者名稱或密碼錯誤")

@decorator

def index():

print("welcome to jd");

@decorator

def home(name):

print("welcome to home, %s"%name)

@decorator

def shopping_car(name):

print("%s的購物車都有啤酒,平板電腦"%name)

#index()

#home("張飛")

shopping_car("張飛")

user_list = [,,,

]login_user =

def loadmeth(loadtype="oracle"):

print("first",loadtype)

def decorator(func):

print("second", loadtype)

print("loadtype:",loadtype)

# 如果使用者已經登入過,則不用再次輸入使用者名稱 密碼

if login_user["username"] and login_user["login"]:

res = func(*args, **kwargs)

return res

uname = input("請輸入使用者名稱:")

pwd = input("請輸入密碼:")

for index, user_dic in enumerate(user_list):

if (user_dic["name"]==uname and user_dic["passwd"] == pwd):

login_user["username"] = uname

login_user["login"] = true

res = func(*args, **kwargs)

return res

print("使用者名稱或密碼錯誤")

return decorator

@loadmeth() #帶引數的裝飾器不是太明白. 為什麼@loadmeth()和@loadmeth是不同的結構

def index():

print("welcome to jd");

@loadmeth()

def home(name):

print("welcome to home, %s"%name)

@loadmeth()

def shopping_car(name):

print("%s的購物車都有啤酒,平板電腦"%name)

print(index)

print(home)

index()

print(home)

home("趙雲")

shopping_car("趙雲")

print(login_user)

(二十三)直譯器模式

定義 直譯器模式 interpreter 給定乙個語言,定義它的文法的一種表示,並定義乙個直譯器,這個直譯器使用該表示來解釋語言中的句子。interpreter.cpp 定義控制台應用程式的入口點。include stdafx.h include include using namespace st...

直譯器模式(二十三)

直譯器模式 interpreter pattern 是一種按照規定語法進行解析的方案,例如解析四則運算 sql語句等,現在專案中使用較少,其定義如下 給定一門語言,定義它的文法的一種表示,並定義乙個直譯器,該直譯器使用該表示來解釋語言中的句子。1.abstractexpression 抽象直譯器 具...

python 學習筆記(二十三)

coding utf8 author liwei import re python正則的應用,math方法判斷正則是否匹配成功 print 正則簡單用例 text hello liwei is 25 if re.match r w s w s w s d text print ok else pri...