Python 如何在全局位置保存头api
我有两个函数取相同的头。我可以在global上保存,这样我就不必每次都打电话了吗Python 如何在全局位置保存头api,python,Python,我有两个函数取相同的头。我可以在global上保存,这样我就不必每次都打电话了吗 def funct1(): json_d = {"group_id": "uid"} headers = {"account-id":"xxx","api-key":"xxx","Content-Type": "application/json"} response = requests.post("https://example.com/docs",headers=headers,jso
def funct1():
json_d = {"group_id": "uid"}
headers = {"account-id":"xxx","api-key":"xxx","Content-Type": "application/json"}
response = requests.post("https://example.com/docs",headers=headers,json=json_d)
def funct2():
json_d = {"group_id": "uid"}
headers = {"account-id":"xxx","api-key":"xxx","Content-Type": "application/json"}
response = requests.post("https://example.com/docs",headers=headers,json=json_d)
我能做什么
headers={“帐户id”:“xxx”,“api键”:“xxx”,“内容类型”:“应用程序/json”}
全局标题
我建议创建一个函数,返回标题字典,以便“保护”它不受更改:
def get_headers():
return {"account-id":"xxx","api-key":"xxx","Content-Type": "application/json"}
在这种情况下,每次调用get_headers函数时都会创建一个新的字典,因此如果在一个函数中更改它(headers字典),它不会影响另一个函数(除非您试图实现的功能)。我建议为默认http调用创建一个函数 在这种情况下,每个函数只有json_d不同。可能这也是URL或其他内容,您可以轻松地将它们向上移动到初始函数,并在
default\u post()
函数中对它们进行参数化
使用**kwargs
可以使其更通用,例如,如果要传递超时,可以调用default\u post(…,timeout=3)
,它会自动传递给requests.post
函数
范例
这两个功能之间的实际区别是什么?你试过吗…?只需在两个函数之外定义
标题
,即可。甚至不需要“global
”。@LaurensKoppenol在json中有更改。\u dcan我喜欢这个`response=requests.post(“)`函数将返回一个字典,因此它的行为应该与发送全局或函数变量相同。试试看。
def funct1():
json_d_1 = {
"group_id": "uid_1"
}
default_post(json_d_1)
def funct2():
json_d_2 = {
"group_id": "uid_2"
}
default_post(json_d_2)
def default_post(json_d, ..., **kwargs):
headers = {"account-id":"xxx","api-key":"xxx","Content-Type": "application/json"}
response = requests.post(
"https://example.com/docs",
headers=headers,
json=json_d,
**kwargs
)
return response