91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

裝飾器總結

發布時間:2020-08-09 20:27:54 來源:網絡 閱讀:291 作者:堅持和學習 欄目:編程語言

import time

裝飾器定義:本質是函數,(裝飾其他函數)就是為其他函數添加附加功能

裝飾器元祖:1、不能修改被裝飾的函數源代碼。 2、不能修改不裝飾的函數的調用方式。

裝飾器 函數內存地址不變,函數名變了其結果不變!!!

def timmer(func): # 這就是裝飾器!
def warpper(*args,*kwargs):
start_time = time.time()
func(
args,**kwargs)
stop_time = time.time()
print("the func run time is %s" % (stop_time - start_time))
return warpper

@timmer #函數的內存地址賦予(把timmer這個裝飾器的內存地址給調用他的函數)
def test():
time.sleep(3)
print("test1")

test()

實現裝飾器的知識儲備:

1.函數即“變量”

2.高階函數:1、把一個函數名當做實參傳給另外一個函數(在不修改被裝飾函數

源代碼的情況下為其添加功能)

2、返回值中包含函數名(不修改函數的調用方式)

3.函數嵌套

高階函數+嵌套函數=》裝飾器

先聲明定義再調用!!!

#1
def fff():
print("llllllll")
xxx()

def xxx():
print("ccococococ")

fff()

#2
def xxx():
print("ccococococ")

def fff():
print("llllllll")
xxx()

fff()

#3 調用xxx的時候后,xxx沒有先定義!
def fff():
print("llllllll")
xxx()

fff()

def xxx():
print("ccococococ")

實現不改變源代碼附加功能!!

def timmer(func): # 這就是裝飾器!
def warpper():
start_time = time.time()
func()
stop_time = time.time()
print("the func run time is %s" % (stop_time - start_time))
return warpper

def test():
time.sleep(3)
print("test1")

timmer(test)

實現不改變源代碼和調用方式附加功能!!!

def timmer(func): # 這就是裝飾器!
def warpper():
start_time = time.time()
func()
stop_time = time.time()
print("the func run time is %s" % (stop_time - start_time))
return warpper

@timmer #函數的內存地址賦予(把timmer這個裝飾器的內存地址給調用他的函數)
def test():
time.sleep(3)
print("test1")

test()

帶參數給裝飾器!

def timmer(func): # 這就是裝飾器!
def warpper(*args,*kwargs):
start_time = time.time()
func(
args,**kwargs)
stop_time = time.time()
print("the func run time is %s" % (stop_time - start_time))
return warpper

@timmer #函數的內存地址賦予(把timmer這個裝飾器的內存地址給調用他的函數)
def test(): # @timmer=test
time.sleep(3)
print("test1")
test("alex")

最高級的裝飾器

user,keypass="hy","123"
def xxxx(func):
def wapper(*args, *kwargs):
username = input("username:").strip()
pasword = input("pssword:").strip()
if user == username and keypass == pasword:
print("welcome to logging---。。。。")
rrs = func(
args, **kwargs)
return rrs
else:
print("username or passord is no")
return wapper

def index():
print("welcome to index")
return 0@xxxx
br/>@xxxx
print("welcome to home ")
return "alex is pig " # 函數的返回值需要輸出,home()調用不會輸出返回值。@xxxx
br/>@xxxx
print("welcome to bbs")

index()
print(home())
bbs()

最終級的裝飾器

user,passwd="alex","123"
def auth(aupe):
def out_warpper(func):
def wrapper(*args, *kwargs):
if aupe == "local":
username = input("username:").strip()
password = input("password:").strip()
if user == username and passwd == password:
print("\033[32;1muser has passed authentication\033[0m")
res = func(
args, **kwargs)
return res
else:
print("\033[32;1mInvalid username or password\033[0m")
elif aupe == "country":
print("搞毛線ldap,不會")
else:print("city 歡迎你")
return wrapper
return out_warpper@auth(aupe="city")
br/>@auth(aupe="city")
print("welcome to city!")@auth(aupe="country")
br/>@auth(aupe="country")
print("welcome to country!!")@auth(aupe="local")
br/>@auth(aupe="local")
print("welcome to home!!! %name")
acct=acc-name
return "from there",acct
city()
country()
local()
print(local())# 函數的返回值需要print函數的調用(local()),或者賦值給一個變量,輸出那個變量!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长垣县| 扶余县| 碌曲县| 资中县| 介休市| 临桂县| 称多县| 云霄县| 长丰县| 阳西县| 应城市| 拉萨市| 常宁市| 牡丹江市| 灵璧县| 枝江市| 新密市| 肥乡县| 余庆县| 南漳县| 青海省| 微山县| 灵武市| 分宜县| 九龙城区| 临颍县| 璧山县| 淮安市| 株洲市| 合水县| 江达县| 甘谷县| 冕宁县| 临西县| 河东区| 南靖县| 宝丰县| 会昌县| 高邑县| 呼图壁县| 和硕县|