标签:add 内存 st表 rap family 结果 语法 maria 访问
装饰器:
在不改变元代码和调用方式的基础上增加新功能
函数中
内存地址 +():表示调用该函数
eg:
def test():
print("==>")
print(test)
# test表示函数test()的内存地址
# wrapper 包装、包裹;decorator 装饰器、装饰
装饰器一般格式:
def wrapper(func):
def deco():
func()
return deco
@wrapper
def index():
print("欢迎来到我的世界!")
index()
如何实现装饰器?
一、没有形参
def wrapper(func): #wrapper的执行结果是:返回deco的内存地址
def deco():
func()
print("add new function")
return deco #return返回的是deco的内存地址
def index():
print("欢迎来到我的世界!")
#result=wrapper(index)
#result()
index=wrapper(index) #index=deco
index() #index()=deco()
>>> 欢迎来到我的世界!
>>> add new function
二、源代码有形参
1、
def wrapper(func): #wrapper的执行结果是:返回deco的内存地址
def deco(user,passwd):
func(user,passwd)
print("add new function")
return deco #return返回的是deco的内存地址
def index(user,passwd):
print("欢迎来到我的世界!")
index = wrapper(index) #index=deco
index(‘root‘,‘root‘) #index()=deco()
>>> 欢迎来到我的世界!
>>> add new function
2、
def wrapper(func): #wrapper的执行结果是:返回deco的内存地址
def deco(*args,**kwargs):
func(*args,**kwargs)
print("add new function")
return deco #return返回的是deco的内存地址
def index(*args,**kwargs):
print("欢迎来到我的世界!")
index = wrapper(index) #index=deco
index(‘root‘,‘root‘) #index()=deco()
>>> 欢迎来到我的世界!
>>> add new function
三、装饰器有形参(在外边再加一个函数)
def default(engine):
def wrapper(func):
def deco():
my_engine = input(‘myengine:‘)
if engine == my_engine:
user = input("username:")
pwd = input("password:")
if user == ‘root‘ and pwd == ‘root‘:
func()
else:
print("用户名密码错误!")
elif engine == ‘myism‘:
print("this is myism engine")
else:
print("不属于mariadb引擎")
return deco
return wrapper
@default(‘innodb‘)
def index():
print("欢迎来到我的世界!")
index
>>> myengine:innodb
>>> username:root
>>> password:root
>>> 欢迎来到我的世界!
实例:
#在访问之前加一层验证:
def wrapper(func):
def deco():
user = input("username:")
pwd = input("password:")
if user == ‘root‘ and pwd == ‘root‘:
func()
else:
print("用户名密码错误!")
return deco
@wrapper #官方指定装饰器语法。index = wrapper(index)
def index():
print("欢迎来到我的世界!")
index()
>>> username:root
>>> password:root
>>> 欢迎来到我的世界!
>>> username:root
>>> password:qwer
>>> 用户名密码错误!
标签:add 内存 st表 rap family 结果 语法 maria 访问
原文地址:https://www.cnblogs.com/twoo/p/11661765.html