Python装饰器练习

编程入门 行业动态 更新时间:2024-10-10 08:18:39

<a href=https://www.elefans.com/category/jswz/34/1770869.html style=Python装饰器练习"/>

Python装饰器练习

装饰器的应用

一、写一个命令分发器

程序员可以方便的注册函数到某一个命令,用户输入命令时,路由到注册的函数
如果此命令没有对应的注册函数,执行默认函数,用户输入用input(">>")
分析:
输入命令映射到一个函数,并执行这个函数。(一直输入可以用while ) ,查找函数是否存在,字典正好合适。
如果输入了某一个cmd命令后,没有找到函数,就要调用缺省的函数执行,这正好是字典缺省参数。

commands = {}   #定义空字典
def reg (name,fn): # 用函数将定义的函数存在字典内commands[name] = fn
def default_func(): #默认函数print('unknown command')
def dispatcher():  # 调度函数while True:cmd = input('>>')if cmd.strip()=="":  #  删除空格 同时,如果用户输入的是空字符串这退出循环breakcommands.get(cmd,default_func)() # 存在则执行定义的函数,返回的是函数名所以要加以个括号 
def func1():print('func1')
def func2():print('func2')
reg('f1',func1)  #将函数存到字典中
reg('f2',func2)
dispatcher()# 调用主函数

上面写的是一个主初始的函数,虽然能够满足用户需求,但是,代码不够完美,而且所有的函数和字典都定义在全局变量中,不是最优选择.而且我们已经学过了柯里化与装饰器,可以进行进一步的优化.

装饰器封装

将reg函数封装成一个装饰器

commands = {}
def reg (name):   # 进行柯里化def wrapper(fn):commands[name] = fnreturn fnreturn wrapper
def default_func():print('unknown command')
def dispatcher():while True:cmd 

更多推荐

Python装饰器练习

本文发布于:2024-02-14 03:07:04,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1761914.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:Python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!