在 Python 中以请求 get() 方法为前缀的字典

Dud*_*ude 1 python session dictionary get python-requests

我目前正在查看财务 API 的一些代码,并且有一个示例函数似乎可以处理指定类型的请求(我对请求很陌生,所以仍在学习这个)。
我不明白函数 return 中的语法。我从来没有见过这样的方法前面的字典,这里发生了什么?感谢您的建议。

import requests 

def dispatch_request(http_method):
    session = requests.Session()
    session.headers.update({
        'Content-Type': 'application/json;charset=utf-8',
        'X-MBX-APIKEY': KEY
    })
    return {
        'GET': session.get,
        'DELETE': session.delete,
        'PUT': session.put,
        'POST': session.post,
    }.get(http_method, 'GET')
Run Code Online (Sandbox Code Playgroud)

如果有人对完整示例感兴趣,可以在此处查看:https : //github.com/binance-exchange/binance-signature-examples/blob/master/python/spot.py

Car*_*ate 6

他们基本上是用字典作为“switch表达”;如果您熟悉switchC 和Java等其他语言中的switches (尽管C 中的 es 是语句,并且不计算为值)。

如果http_method'POST'例如:

{   'GET': session.get,
    'DELETE': session.delete,
    'PUT': session.put,
    'POST': session.post,
}.get('POST')
Run Code Online (Sandbox Code Playgroud)

调用get将评估为session.post,然后将返回。它只是一种替换一些ifs 来决定返回什么的方法。

  • @FrankYellin 是的。我一直坚信“让它崩溃”。如果调用者需要处理它,就让他们这样做。这比假设他们想要什么要好。 (2认同)