鱼C论坛

 找回密码
 立即注册
查看: 628|回复: 6

关于装饰器的问题 求大神解答!!

[复制链接]
发表于 2020-5-9 21:51:25 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
关于在装饰器中,更改传参,并传入函数的问题,普通情况下用(X,Y)能解决,但是我这里用的是*args 不知道如何更改,请看下面,

def validate(func):
    def inner(*args, **kwargs):
        a = args[1]      ###调用的函数传递给args 的是(‘存钱’,100),这里获取的是存入的金额。
        while a < 100:
                a = int(input('请重新输入要存入的金额'))
                ## 这里a重新获取了用户要存入的金额,但是需要把他传递给下面的 func函数里面的*args

         (这里不知道如何吧新的a打包到 args中,并传递给下面的函数了)
        func(*args, **kwargs)
    return inner

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-5-9 21:59:19 | 显示全部楼层
知道有几个参数为什么用*args
def validate(func):
    def inner(name,a):
         while a < 100:
                a = int(input('请重新输入要存入的金额'))

        func(name,a)
    return inner
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-9 23:08:40 | 显示全部楼层
考虑放**kwargs里面,字典可以跟新值的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-9 23:18:58 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-9 21:59
知道有几个参数为什么用*args

为了保证通用性,因为还有转账函数, 他就有3个传值。 可能还有其他函数有更多传值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-9 23:19:58 | 显示全部楼层
Stubborn 发表于 2020-5-9 23:08
考虑放**kwargs里面,字典可以跟新值的

元组是不可更改的,我晕,我把这茬忘记了,  如果是列表呢?  字典还是太麻烦了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-9 23:28:15 | 显示全部楼层
从入门到富豪 发表于 2020-5-9 23:19
元组是不可更改的,我晕,我把这茬忘记了,  如果是列表呢?  字典还是太麻烦了。

列表是有序的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-10 17:06:43 | 显示全部楼层
永恒的蓝色梦想 发表于 2020-5-9 21:59
知道有几个参数为什么用*args

为了保证通用性,因为还有转账函数, 他就有3个传值。 可能还有其他函数有更多传值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-27 06:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表