1、无参数
在我理解,这里其实就是把test继承到了dom内,然后在dom内执行了test
代码:
def dom(fun): # fun == test()
print(f'''执行{fun.__name__}开始!''')
fun()
print(f'''执行结束!''')
fun()
@dom
def test():
print('这里是test内容')
执行结果:
执行test开始!
这里是test内容
执行结束!
这里是test内容
嵌套:
def num(name): # name == @num('test') 内的test
def dom(fun): # fun == test()
print(f'''执行{fun.__name__}开始!''')
print(name)
fun()
print(f'''执行结束!''')
return dom
@num('test')
def test():
print('执行test内容')
结果:
执行test开始!
test
执行test内容
执行结束!
有参数
代码:
def num(name): # name == @num('test') 内的test
def dom(fun): # fun == test()
def numder(a, b, c): # == a, b, c # 这里可以用ABC,也可以用*args, **kwargs 来定义形参
print(f'''执行{fun.__name__}开始!''')
print(name)
print(a, b, c)
print(f'''执行结束!''')
return numder
return dom
@num('test')
def test(a, b, c):
return (a, b, c)
test(1, [2, 3], 'python')
执行结果:
执行test开始!
test
1 [2, 3] python
执行结束!
执行多个:
test、test1同时被继承:
def num(name): # name == @num('test') 内的test
def dom(fun): # fun == test()
def numder(*args, **kwargs): # == a, b, c # 这里可以用ABC,也可以用*args, **kwargs 来定义形参
print(f'''执行{fun.__name__}开始!''')
print(name)
print(*args, **kwargs)
print(f'''执行结束!''')
return numder
return dom
@num('test')
def test(a, b, c):
return a, b, c
@num('test1')
def test1(*args, **kwargs):
return (*args, kwargs)
test(1, [2, 3], 'python')
test1('你好,世界')
执行结果:
执行test开始!
test
1 [2, 3] python
执行结束!
执行test1开始!
test1
你好,世界
执行结束!