闭包
def config_name(name):
def inner(msg):
print(name+": "+msg)
return inner
Tom = config_name("Tom")
Jane = config_name("Jane")
Tom("Hello! Jane")
Jane("Hello! Tom")
装饰器
通用装饰器
def decorator(func):
def inner(*args, **kwargs):
print("正在努力执行加法计算")
num = func(*args, **kwargs)
return num
return inner
@decorator
def show():
return "hello world!"
show = show()
print(show)
多重装饰器
def decorator_p(func):
def inner():
p = "<p>"+func()+"</p>"
return p
return inner
def decorator_div(func):
def inner():
div = "<div>"+func()+"</div>"
return div
return inner
@decorator_div
@decorator_p
def show():
return "hello world!"
show = show()
print(show)
带参数装饰器
def return_decorator(flag):
def decorator(func):
def inner(sum1, sum2):
if flag == "+":
print("——正在运行加法运算——")
elif flag == "-":
print("——正在运行减法运算——")
return func(sum1, sum2)
return inner
return decorator
@return_decorator("+")
def sum_add(num1, num2):
result = num1 + num2
return result
@return_decorator("-")
def sum_sub(num1, num2):
result = num1 - num2
return result
sum_add = sum_add(3, 3)
print(sum_add)
sum_sub = sum_sub(6, 3)
print(sum_sub)
类装饰器
class MyDecorator(object):
def __init__(self, func):
self.func = func
def __call__(self, *args, **kwargs):
print("登入微信成功")
self.func()
@MyDecorator
def show():
print("在微信聊天中.....")
show()