def urlencode_params(params):
    """URL encodes the parameters.

    :param params: The parameters
    :type params: list of key/value tuples.

    :rtype: string
    """
    # urlencode does not handle unicode strings in Python 2.
    # Firstly, normalize the values so they get encoded correctly.
    extended = []
    for key, val in params:
        if isinstance(val, (list, tuple)):
            for v in val:
                extended.append((key, normalize_for_urlencode(v)))
        else:
            extended.append((key, normalize_for_urlencode(val)))
    # Secondly, unquote unreserved chars which are incorrectly quoted
    # by urllib.urlencode, causing invalid auth signatures. See GH #72
    # for more info.
    return requests.utils.unquote_unreserved(urlencode(extended))
URL encodes the parameters.

    :param params: The parameters
    :type params: list of key/value tuples.

    :rtype: string
    
googlemaps/client.py