解决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
相关产品推荐
相关产品推荐

