【问题标题】:Calling a function in Python without giving all arguments? [duplicate]在 Python 中调用函数而不给出所有参数? [复制]
【发布时间】:2015-05-16 21:03:57
【问题描述】:

我正在尝试在 Python 中执行 Google Analytics 批处理请求。

batch.add(service.data().ga().get(
       ids=ids, 
       start_date=start_date, 
       end_date=end_date, 
       metrics=metrics, 
       dimensions=dimensions,
       segment=segment,
       sort=sort), callback=process_response)

来自文档 (https://developers.google.com/api-client-library/python/guide/batch):

add() 方法还允许您为每个请求提供一个 request_id 参数。这些 ID 提供给回调。如果您不提供,图书馆会为您创建一个。每个 API 请求的 ID 必须是唯一的,否则 add() 会引发异常。

所以如果我像这样创建一个函数 process_response:

def process_response(request_id, response, exception):
    print response

我在这些变量中得到回调结果。这些变量由 Google Analytics 库自动生成,并且运行良好。但是,我想向 process_response 函数添加另一个参数 page_id,以便将 page_id 与回调的结果链接起来。但是,如果我这样做:

 def process_response(page_id, request_id, response, exception):
        print response

然后:

callback=process_response(page_id)

我得到一个错误:

TypeError: process_response() takes exactly 4 arguments (1 given)

所以归结为:我想调用一个接受 4 个参数同时只提供 1 个参数 (page_id) 的函数,因此其他 3 个参数可以由 Google Analytics 库自动生成。这可能吗?还是有另一种方法可以将 page_id 链接到响应?

任何帮助将不胜感激,我完全陷入困境!提前致谢!

【问题讨论】:

  • 问题是您试图传递来自process_response响应,而不是函数本身,如callback。你应该很高兴你得到了一个错误,否则你可能会很困惑!

标签: python python-2.7 google-analytics batch-processing google-analytics-api


【解决方案1】:

您可以定义默认参数,例如:

 def process_response(page_id, request_id=DEFAULT_1, response=DEFAULT_2, exception=DEFAULT_3):
        print response

然后处理如果接收到默认参数会发生什么。不过,还有其他一些方法可以处理这个问题

【讨论】:

    猜你喜欢
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-19
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    相关资源
    最近更新 更多