Python学习笔记

1.装饰器

 装饰器的@这种写法,其实就是把hello这个函数当作参数传入到名字为wdc的函数中去,并把函数wdc的返回值重新赋值给变量hello。

# 不带参数的装饰器

def welcome(fn):

    def wrapper(*args, **kwargs):
        print(f"welcome")
        res = fn(*args, **kwargs)

        return res
    
    return wrapper


@welcome
def my_fun(test_str):
    print(f"你好{test_str}")

my_fun('666')

# 相当于如下:
# my_fun = welcome(my_fun)
# my_fun('666')
# 带参数的装饰器

def welcome(name):

    def decorator(fn):

        def wrapper(*args, **kwargs):
            print(f"welcome:{name}")
            res = fn(*args, **kwargs)

            return res
        
        return wrapper
    
    return decorator


@welcome("wdc")
def my_fun(test_str):
    print(f"你好{test_str}")

my_fun('666')

# 相当于如下:
# welcome = welcome("wdc")
# my_fun = welcome(my_fun)
# my_fun('666')

 

posted @ 2023-06-24 00:09  手可摘星辰。  阅读(14)  评论(0)    收藏  举报