如何在Python中正确检查变量是否存在?
正确检查Python变量是否存在的方法
你遇到的这个报错其实很好理解——当你直接写VAR的时候,如果这个变量根本没定义,Python解释器会先尝试去查找这个名称,找不到就直接抛出NameError,根本轮不到执行in globals()的判断逻辑。
这里给你两种可靠的解决方法:
方法1:利用字典的get()方法查询全局/局部作用域
globals()和locals()返回的都是字典,我们可以用字典的get()方法来安全查询变量名(注意要传字符串形式的变量名):
# 检查全局变量 if globals().get('VAR') is not None: print('TRUE') else: print("FALSE") # 如果是在函数等局部作用域,用locals() def check_var(): if locals().get('local_var') is not None: print('局部变量存在') else: print('局部变量不存在')
get()方法在键不存在时会返回None,不会触发报错,完美解决你的问题。
方法2:用try-except捕获NameError(更通用)
这是Python推崇的“EAFP(请求原谅比请求许可更简单)”风格,不管是全局还是局部变量都适用:
try: # 尝试引用变量 VAR print('TRUE') except NameError: # 变量未定义时触发这个异常 print('FALSE')
这种写法的优势在于,哪怕变量是在嵌套作用域里,也能正确判断,适用性比查字典更广。
简单总结一下:你原来的写法错在直接引用了未定义的变量名,导致提前触发了异常;换成字符串变量名查字典,或者用异常捕获,就能正确判断变量是否存在啦。
内容的提问来源于stack exchange,提问作者Nguyễn Phú Khương
相关产品推荐
相关产品推荐

