
在任何编程语言中,使用尚未定义或设置的变量(隐式或显式)通常是一件坏事,因为它意味着程序的逻辑没有经过适当的思考,这有时会给出不可预测的行为。
如何在Python中检查一个变量是否存在
要检查一个局部变量在Python中是否存在,请使用in操作符 ,并在locals()字典中检查。要检查一个全局变量在Python中是否存在,使用in操作符 ,并在**globals()字典中进行检查。要检查一个对象是否有一个属性,使用hasattr()**函数。
Python locals()
locals() 是一个内置的Python函数,它返回一个当前本地符号表的字典。本地符号表存储了程序的本地范围所需的所有信息,这些信息可以使用python内置函数locals()来访问。
让我们定义两个变量,然后打印 locals() 的值。
kb = 19
kl = 21
print(locals())
输出
{'__name__': '__main__', '__doc__': None, '__package__': None,
'__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x102c0cca0>,
'__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>,
'__file__': '/Users/krunallathiya/Desktop/Code/Python/app.py', '__cached__': None,
'kb': 19, 'kl': 21}
你可以看到,最后一个 局部变量 是我们声明的变量,即kb 和kl。
Python globals()
该 globals()是一个内置的Python函数,用于返回当前全局符号表的字典。符号表是一个数据结构,包含了程序的所有基本信息,包括类、方法和变量名。
kb = 19
kl = 21
def add():
mbb = 11
ans = mbb + kb
globals()['kb'] = ans
print(ans)
add()
输出
30
在这里,你可以看到,我们在Python脚本中声明了两个全局变量。为了看到它的全局变量,我们在函数中使用了它的值,这并没有引发错误,这意味着我们在函数中访问了全局变量。
现在我们明白了什么是全局变量和局部变量,以及如何定义和声明它们,让我们来检查Python中是否存在一个局部或全局变量。
Python 检查局部变量是否存在
要检查一个局部变量是否存在于Python中,使用in 操作符来对付locals()函数的输出,它有一个当前局部变量表的字典。in 操作符 "返回一个布尔值。如果一个变量存在,它返回True,否则返回False。
def datetor():
data = 10
if 'data' in locals():
print('data is in local variables')
else:
print('data is not in local variables')
datetor()
输出结果
data is in local variables
你可以看到,数据变量是在函数内部定义的,因此它执行**if语句** 并打印输出。
如果我们检查到一个未定义的变量,那么将执行else语句 。
def datetor():
data = 10
if 'drake' in locals():
print('data is in local variables')
else:
print('data is not in local variables')
datetor()
输出
data is not in local variables
在这个例子中,我们正在检查未定义的变量drake, 它不在本地符号表中,这就是为什么else语句被执行并打印其语句。
Python检查一个全局变量是否存在
要检查一个全局变量在Python中是否存在,使用in 操作符来对付globals()函数的输出,它有一个当前全局变量表的字典。in 操作符 "返回一个布尔值。如果一个变量存在,它返回True,否则返回False。
data = 10
def datetor():
if 'data' in globals():
print('data is in global variables')
else:
print('data is not in global variables')
datetor()
输出结果
data is in global variables
你可以看到,数据 变量是在函数之外全局定义的,因此它执行if语句 并打印输出。如果我们检查一个没有全局定义的变量,那么else语句 将运行。
def datetor():
if 'insta' in globals():
print('insta is in global variables')
else:
print('insta is not in global variables')
datetor()
输出
insta is not in global variables
如何在Python中使用没有定义或设置的任何变量
要使用Python中尚未定义或设置(隐式或显式)的变量,请使用try-except 子句,如果它抛出一个错误,那么将该变量的值设为 无.
使用一个没有正确定义或设置的变量的Python代码
def datetor():
try:
print(data)
except NameError:
data = None
print(data)
datetor()
输出
None
在这个例子中,我们没有定义一个叫做data 的变量**,** 并且我们试图在try块 中打印它的值**。** 正如预期的那样,它返回NameError,但是如果它抛出NameError,我们就会把它设置为None。 所以这就是为什么它返回None。
如果我们正确地设置了一个变量数据,它就不会打印None; 相反,它会打印它的值 ,因为现在这个变量被精确地定义和设置了。
def datetor():
data = 10
try:
print(data)
except NameError:
data = None
print(data)
datetor()
输出
10
在使用data变量之前,我们把它的值设置为10,这就是为什么它返回10。
总结
在使用变量之前检查它的存在是最常用的操作之一,使用 "in operator", 你可以使用locals()或globals()函数检查任何变量的存在,或者使用try-except子句来检查或设置变量的值。
本教程就到此为止。