python - 我怎样才能重构这段代码更简洁?

标签 python python-2.7 google-analytics google-analytics-api

我正在使用 Python 从 Google Analytics(分析)核心报告 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()   

最佳答案

创建一个带有特定类型参数的字典,然后用 **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()   

我保留了常见的论点。如果 type 可以有更多的值,那么您可能还需要添加一个 else: return None

关于python - 我怎样才能重构这段代码更简洁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35296348/

相关文章:

python - 使用 python pandas 添加新行时如何不显示/显示 csv 中的索引

python - Airflow:如何确保 DAG 每 5 分钟运行一次?

Python:用于绘制甘特图的模块

python - 条形图中的颜色

python - 自定义 Python unicode 模块

google-analytics - Pentaho Google Analytics(分析)插件-超过10,000行时该怎么办?

java - 适用于普通 Java 桌面应用程序的分析服务/API

python - YouTube API 的官方客户端是线程安全的吗?

python - 在 Cygwin 提示符下运行 Python 命令 (Windows 8)

google-analytics - 使用Google标记管理器处理dataLayer