【问题标题】:Python decorator for data analytics class用于数据分析类的 Python 装饰器
【发布时间】:2018-09-28 05:32:23
【问题描述】:

我需要创建一个装饰器函数,在调用函数之前将函数的输入参数乘以十。接下来,创建一个名为 normal_function 的函数,该函数接受输入值并显示结果。测试您的装饰器以确保显示的值比传递给 normal_function 的值大十倍。

def mult_decorator_function(a_normal_function):
  x = a_normal_function() * 10
  return x

@mult_decorator_function
def normal_function(x):
  print(x)

normal_function(10)

【问题讨论】:

  • 装饰器应该总是返回一个可调用的,就像一个函数。此外,您的方法不会乘以输入参数,而是乘以返回的结果。
  • normal_function 是输入参数吗?我想我对这里的实际情况感到困惑。

标签: python python-decorators


【解决方案1】:

装饰器必须有嵌套函数,还需要有return而不是print

def mult_decorator_function(a_normal_function):
    def wrapper(x):
        x = a_normal_function(x) * 10
        return x
    return wrapper

@mult_decorator_function
def normal_function(x):
  return x

print(normal_function(10))

输出:

100

【讨论】:

  • 哦,这就是需要包装器的原因。太好了,谢谢你的帮助!
猜你喜欢
  • 2014-01-01
  • 1970-01-01
  • 2011-04-16
  • 2011-11-21
  • 2023-03-14
  • 2021-07-16
  • 2011-04-28
  • 2016-09-11
  • 2016-03-17
相关资源
最近更新 更多