在不给出所有参数的情况下在Python中调用函数?

时间:2015-05-16 21:03:57

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

我尝试在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链接到响应?

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

1 个答案:

答案 0 :(得分:0)

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

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

然后处理收到默认参数时会发生什么。除了

之外,还有其他一些方法可以解决这个问题