python - api token 应该如何传递给函数?

标签 python

在我的主函数中,我从环境变量中获取 API token 。我应该使用 global 还是将其作为参数传递给所有使用 api_token 的函数?

def main():
    api_token = os.environ.get('API_TOKEN')

def request_data():
    url = 'https://api.example.com/search'
    headers = {'Authorization': 'token {}'.format(api_token)
    params = {}
    r = requests.get(url, params=params, headers=headers)

def update_data():
    url = 'https://api.example.com/update'
    headers = {'Authorization': 'token {}'.format(api_token)
    data = {}
    r = requests.put(url, data=json.dumps(data), headers=headers)

最佳答案

使用类来封装请求逻辑怎么样?

def main():
    api_token = os.environ.get('API_TOKEN')
    api = Api(api_token)
    api.request_data()

class Api(object):
    def __init__(self, token):
        self.token = token

    def request_data(self):
        url = 'https://api.example.com/search'
        header = {'Authorization': 'token {}'.format(self.token)
        params = {}
        r = requests.get(url, params=params, headers=headers)

    def update_data(self):
        url = 'https://api.example.com/update'
        header = {'Authorization': 'token {}'.format(self.token)
        data = {}
        r = requests.put(url, data=json.dumps(data), headers=headers)

关于python - api token 应该如何传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56417322/

相关文章:

python - 删除 Pandas 中 DateTime 索引的时间部分

python - 跨多个 DataFrame 计算值

Python:逆经验累积分布函数(ECDF)?

python - 从自身内部调用一个函数

python - 使用自定义格式的 pandas to_datetime 中的 KeyError

python - “SQLite”数据库被锁定错误

python - 如何在 openCV python 中结合背景减法和密集光流跟踪

python - 如何正确分组列?

Python - 为什么导入子模块会使包可见?

python - 如何在不升级依赖项的情况下更新 Poetry 锁定文件?