首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我如何成功地使用装饰器函数来解决我的问题?

我如何成功地使用装饰器函数来解决我的问题?
EN

Stack Overflow用户
提问于 2021-10-19 19:04:55
回答 1查看 56关注 0票数 0

我尝试对装饰器使用派"@“语法,但我似乎无法使其适用于我的特定示例。

这样我就能达到我想要的效果。

代码语言:javascript
复制
import pandas as pd

def prepare_todays_campaigns(decorated):
  
  campaigns_outgoing = pd.DataFrame({"test":[1,2,3]})

  n_campaigns = len(campaigns_outgoing)

  if n_campaigns > 0:

      print(
          f"{n_campaigns} to process."
      )

      decorated(campaigns_outgoing)
      
def dec_test(campaigns_outgoing):
  for _, row in campaigns_outgoing.iterrows():
    print(row)
    

prepare_todays_campaigns(dec_test)

但是当我尝试使用@语法糖时,我似乎得不到预期的结果……

代码语言:javascript
复制
def prepare_todays_campaigns(decorated):
  
  def wrapper(*args, **kwargs):
    # creatives x campaign
    campaigns_outgoing = pd.DataFrame({"test":[1,2,3]})

    n_campaigns = len(campaigns_outgoing)

    if n_campaigns > 0:

        print(
            f"{n_campaigns} to process."
        )

        decorated(*args, **kwargs)

    
  return wrapper

@prepare_todays_campaigns
def dec_test(campaigns_outgoing):
  for _, row in campaigns_outgoing.iterrows():
    print(row)
    
dec_test()

结果:

有没有人对如何解决这个问题有什么建议?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-19 19:18:19

看一下方法签名def dec_test(campaigns_outgoing):

当你调用这个方法时:

dec_test()

您不需要传入campaigns_outgoing参数。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69636403

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档