You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

解决Python中NameError: name 'token'未定义问题的可行方案

解决Python中NameError: name 'token' is not defined错误

问题场景

以下代码运行时会抛出NameError: name 'token' is not defined错误:

def get_token():
    token_request = requests.post(...)
    if token_request.status_code == 200:
        print('get token = OK')
    else:
        print('get token = ERROR', token_request.status_code, token_request.text)
    token = {'Authorization': ...}
...
try:
    token
except NameError:
    print('need get token')
    get_token()
    print(token)

错误输出:

NameError: name 'token' is not defined

问题原因

get_token函数内部定义的token是局部变量,函数执行完毕后局部变量的作用域会销毁,无法在函数外部被访问。因此即便调用了get_token(),外部代码依然找不到token变量,触发NameError。

有效解决方案

在函数内使用global关键字声明token,将其标记为全局变量,这样函数执行后token就能在外部作用域中被访问。同时该逻辑能保证只有在其他代码需要token但它未定义时,才会执行get_token函数获取令牌。

修改后的代码如下:

def get_token():
    token_request = requests.post(...)
    if token_request.status_code == 200:
        print('get token = OK')
        global token
        token = {'Authorization': ...}
    else:
        print('get token = ERROR', token_request.status_code, token_request.text)

# 在需要使用token的代码中:
try:
    token
except NameError:
    print('need get token')
    get_token()

内容的提问来源于stack exchange,提问作者Dmitriy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 11:29:59