如何重构此代码以使其更简洁?

tdk*_*dkr 2 python google-analytics google-analytics-api python-2.7

我正在使用Python从Google Analytics Core Reporting API中提取一些数据.我已经设法使用函数来对API进行不同的调用(下面只是两个例子)但是我想知道如何重构它以使其更短?还有很多重复的代码.

def get_pvs(service, profile_id, start_date, end_date, type, data):
    if type == "url":
        return service.data().ga().get(
            ids = 'ga:' + profile_id,
            start_date = start_date,
            end_date = end_date, 
            metrics = 'ga:pageviews', 
            dimensions = 'ga:pagePath',   
            filters = 'ga:pageviews!=0',
            sort = '-ga:pageviews',
            max_results = '10000').execute()
    elif type == "author":
        return service.data().ga().get(
            ids = 'ga:' + profile_id,
            start_date = start_date,
            end_date = end_date, 
            metrics = 'ga:pageviews', 
            # Post Author
            dimensions = 'ga:dimension2',
            sort = '-ga:pageviews',
            max_results = '100').execute()   
Run Code Online (Sandbox Code Playgroud)

Mar*_*ers 7

使用特定于类型的参数创建字典,然后将其应用于**kw:

def get_pvs(service, profile_id, start_date, end_date, type, data):
    if type == 'url':
        kwargs = {
            'dimensions': 'ga:pagePath',
            'filters': 'ga:pageviews!=0',
            'maxresults': 100
        }
    elif type == 'author':
        kwargs = {
            'dimensions': 'ga:dimension2',
            'max_results': '100'
        }
    return service.data().ga().get(
        ids = 'ga:' + profile_id,
        start_date = start_date,
        end_date = end_date, 
        metrics = 'ga:pageviews', 
        sort = '-ga:pageviews',
        **kwargs).execute()   
Run Code Online (Sandbox Code Playgroud)

我把共同的论点留在了原地.如果type可以有更多的值,那么你可能还需要添加一个else: return None.