【问题标题】:Extract dictionary containing variables from function从函数中提取包含变量的字典
【发布时间】:2014-01-16 10:48:26
【问题描述】:

我有一个看起来像这样的函数:

def request( request = None, account_id = 0, user_id = 0, user = {"ID":0}, headers = None):
    """Send a User request to the server
    Send a request to the server
    """
    url = api_root + "/accounts/" + str(account_id)

    function_dictionary = {'get_user_from_id': (requests.get,                       #Function
                                               (url + "/users/" + str(user_id),),      #Tuple of Arguments
                                               {'headers': headers}),               #Dictionary of keyword args

                               'get_user_from_username': (requests.get,
                                                (url + "/users?username=" + str(user_id),),
                                                {'headers': headers}),

                               'get_user_from_email': (requests.get,
                                             (url + "/users?email=" + str(user_id),),
                                             {'headers': headers}),

                               'delete': (requests.delete,
                                          (url + "/users/" + str(user_id),),
                                          {'headers': headers}),

                               'patch_user':(requests.patch,
                                             (url + "/users/" + str(user["ID"]),),
                                             {'headers': headers, 'data':json.dumps(user)}),

                               'post': (requests.post,
                                        (url + "/users" ,),
                                        {'headers': headers,'data':json.dumps(user)})
                               }

    func, args, kwargs = function_dictionary[request]
    result = func(*args, **kwargs)

    #Throw exception if non-200 response
    result.raise_for_status()

    #Result from query
    print "Query " + request + " result: " + result.text

    return result

是否可以从request 函数中删除此字典,以便在每次调用请求时都不会重新构建它?

主要问题是 - 调用函数时需要插入一些变量,即user_id, user, account_id

【问题讨论】:

    标签: python dictionary


    【解决方案1】:

    不容易。

    但我看不出你有什么理由这样做。在每个请求上构建一个六项字典的开销绝对是微不足道的。

    【讨论】:

    • 问题是函数的参数根据request参数的不同意味着不同的东西,所以当参数的类型错误时,构建字典的某些部分会触发错误。有关上下文,请参阅 OP 的 previous question
    猜你喜欢
    • 1970-01-01
    • 2011-05-04
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多