繁体   English   中英

我怎样才能成功地使用装饰器函数来解决我的问题?

[英]How can I successfully use a decorator function for my problem?

我正在尝试对装饰器使用馅饼“@”语法,但我似乎无法让它适用于我的特定示例。

我可以用这个达到我想要的结果..

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)

IE

在此处输入图片说明

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

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()

结果:

在此处输入图片说明

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

查看方法签名def dec_test(campaigns_outgoing):

当您调用该方法时:

dec_test()

您没有传入campaigns_outgoing参数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM