for loop over function that returns a tuple?

Victor Hooi victorhooi at gmail.com
Wed Sep 2 07:49:21 EDT 2015


I have a function which is meant to return a tuple:

    def get_metrics(server_status_json, metrics_to_extract, line_number):
        <SOME_CODE>
        return ((timestamp, "serverstatus", values, tags))

I also have:

    def create_point(timestamp, metric_name, values, tags):
        return {
            "measurement": _MEASUREMENT_PREFIX + metric_name,
            "tags": tags,
            "time": timestamp,
            "fields": values
        }

I am calling get_metric in a for loop like so:

    for metric_data in get_metrics(server_status_json, mmapv1_metrics, line_number):
        json_points.append(create_point(*metric_data))

I was hoping to use tuple unpacking to pass metric_data straight from get_metrics through to create_point.

However, in this case, metric_data only contains timestamp.

I suppose I could assign multiple variables like, and pass them through:

    for timestamp, metric_name, value, tags in get_metrics(server_status_json, common_metrics, line_number):

However, that seems unnecessarily verbose, and I'm sure there's a simple way to do this with tuple unpacking?



More information about the Python-list mailing list