从入门到富豪 发表于 2020-5-9 21:51:25

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

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

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

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

永恒的蓝色梦想 发表于 2020-5-9 21:59:19

知道有几个参数为什么用*argsdef validate(func):
    def inner(name,a):
         while a < 100:
                a = int(input('请重新输入要存入的金额'))

      func(name,a)
    return inner

Stubborn 发表于 2020-5-9 23:08:40

考虑放**kwargs里面,字典可以跟新值的

从入门到富豪 发表于 2020-5-9 23:18:58

永恒的蓝色梦想 发表于 2020-5-9 21:59
知道有几个参数为什么用*args

为了保证通用性,因为还有转账函数, 他就有3个传值。 可能还有其他函数有更多传值。

从入门到富豪 发表于 2020-5-9 23:19:58

Stubborn 发表于 2020-5-9 23:08
考虑放**kwargs里面,字典可以跟新值的

元组是不可更改的,我晕,我把这茬忘记了,如果是列表呢?字典还是太麻烦了。

Stubborn 发表于 2020-5-9 23:28:15

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

列表是有序的

从入门到富豪 发表于 2020-5-10 17:06:43

永恒的蓝色梦想 发表于 2020-5-9 21:59
知道有几个参数为什么用*args

为了保证通用性,因为还有转账函数, 他就有3个传值。 可能还有其他函数有更多传值。
页: [1]
查看完整版本: 关于装饰器的问题 求大神解答!!