Java教程

装饰器

本文主要是介绍装饰器,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
# 需求 我要玩游戏, 需要一个管家完成开挂操作,并把游戏返回给我玩
# 装饰器本质上是一个闭包
#    作用:在不改变原有函数作用的情况下, 给函数增加新的功能,  可以在函数前后添加新功能. 但是不该原代码
# 在不改变函数的情况下, 在目标函数前后加上新的功能
#  登录的地方, 日志
def guanjia(game):  # game 作为参数传递进函数guanjia()中, 就一直在函数内部
    def inner():  # 定义函数inner
        print("打开外挂")
        game()  # 参数如何进来内部函数的.....待理解啊, 为什么不需要global(这个不是参数是变量) ,
        print("关闭外挂")

    return inner


@guanjia  # 相当于play_wz = guanjia(play_wz)
def play_wz():
    print("我玩王者荣耀")


@guanjia  # 相当于play_wz = guanjia(play_dt)
def play_dt():
    print("我玩多塔")


# play_dt = guanjia(play_dt)  # 函数名直接赋值

play_wz()

 

这篇关于装饰器的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!