Python 如何在全局位置保存头api

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

我有两个函数取相同的头。我可以在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,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