python - Python 中以请求 get() 方法为前缀的字典
问题描述
我目前正在查看财务 API 的一些代码,并且有一个示例函数似乎可以处理指定类型的请求(我对请求很陌生,所以仍在学习这一点)。
我不明白函数返回的语法。我从来没有见过像这样的方法前面加上字典,这里发生了什么?感谢您的建议。
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')
如果有人感兴趣,可以在这里看到完整的示例:https ://github.com/binance-exchange/binance-signature-examples/blob/master/python/spot.py
解决方案
他们基本上将字典用作“switch
表达”;如果您熟悉switch
C 和Java等其他语言中的 es (尽管switch
C 中的 es 是语句,并且不计算值)。
如果http_method
是'POST'
例如:
{ 'GET': session.get,
'DELETE': session.delete,
'PUT': session.put,
'POST': session.post,
}.get('POST')
调用get
将评估为session.post
,然后将返回。这只是一种替换一些if
s 来决定返回什么的方法。
推荐阅读
- c# - 如何通过 Dotnet Core 2.2 在 Bot 服务中使用 Microsoft.Bot.Builder.Teams
- c++ - C++中的for循环
- r - 如何将不同的文件读入目录和 json 文件的结构
- python - 如何生成包括 NaN 在内的随机值?
- c - 为什么 prgram 不执行切换?
- assembly - 理解和分析汇编代码
- docker - Docker swarm 未正确映射端口 - 连接问题
- javascript - Contenteditable 按标签环绕元素;无法将光标移出新包围的选择
- php - MySQL会话变量不会显示
- reactjs - 如何修复路由器中的“cb 不是功能”?