如何检查Python变量是否存在?
变量被定义为用于存储某些数据的容器。它们代表一个内存位置。Python中的变量可以存储任何类型的数据或值,包括整数、字符串、浮点数、布尔值等。
在Python中,定义程序中的变量时,不需要指定其数据类型。但是,在任何函数或应用程序可以使用变量之前,必须先定义它们。这可以通过简单地将值赋给名称来完成,如下所示:
x = 5
这里,“x”是变量的名称。此外,由于x保存的是整数值,因此它是一个整型变量。
变量的作用域
变量可能并非在程序中的所有时候都可访问。变量的声明决定了这一点。变量作用域决定了在程序中可以在何处访问标识符。Python变量存在两个基本作用域。
局部变量
全局变量
局部变量
在代码块中定义的变量通常只能在该代码块内访问。在代码块外部无法访问它们。这类变量称为局部变量。局部变量的行为类似于形式参数标识符。下面的例子说明了这一点。如果从它们的作用域之外访问它们,则会触发NameError异常。
示例
def greet():
name = 'Rahul'
print('Hello ', name)
greet()
print(name)
在上面的示例中,“name”是greet()函数的局部变量,在函数外部无法访问它。
输出
Hello Rahul Traceback (most recent call last): File "main.py", line 5, inprint(name) NameError: name 'name' is not defined
全局变量
全局变量是在函数代码块之外存在的变量。任何函数都可以访问它的值。在定义函数之前,有必要初始化name变量。
name = 'Rahul'
def greet():
print("Hello",name)
greet()
如果我们执行上面的简单程序,则会产生如下结果。
输出
Hello Rahul
验证变量的存在
可以使用异常来检查变量是否存在,但这并不推荐,因为我们并不总是知道是否定义了变量。在Python中检查变量是否存在最安全、最优的方法是使用以下方法。
使用**locals()**方法查找变量在特定代码块中是否存在。
可以使用**globals()**方法确定变量在整个程序中的存在情况。
使用Locals()方法
将使用locals()函数验证局部变量的存在。在局部命名空间中,**locals()**返回一个字典,其中包含当前活动变量名称作为键。
示例
在下面的示例中,定义了一个函数“local_func”,并创建了一个字符串类型的局部变量“var”。由于locals()方法返回包含当前局部变量(以键的形式)的字典,因此我们可以使用“in”运算符来检查变量是否存在。为了更准确,我们也可以在局部命名空间之外调用locals()方法来检查其是否存在。
def local_func():
var = "Test"
if 'var' in locals():
print ('variable found in local namespace')
else:
print ('variable not found in the local namespace')
local_func()
if 'var' in locals():
print ('variable found in the global namespace')
else:
print ('variable not found in the global namespace')
输出
variable found in local namespace variable not found in the global namespace
使用Globals()方法
使用globals()方法确定变量在全局命名空间中的状态。此方法返回的字典中,全局变量名称表示为字符串。
示例
可以使用“in”运算符在字典中检查变量名字符串。如果为真,则存在的变量是全局命名空间中存在的变量;否则,它不存在。
var = "Python"
if 'var' in globals():
print ("variable present in global namespace")
else:
print ("variable does not present in global namespace")
输出
variable present in global namespace
检查变量是否存在于类中
可以使用**hasattr()**函数查看变量是否存在于类中。如果对象包含给定名称的属性,则此方法的返回值为真;否则为假。
hasattr()方法的语法为:
hasattr(object, name)
示例
在下面的示例中,我们定义了一个包含描述其特征的属性的类“fruit”。使用hasattr()方法,我们检查某些属性是否存在;如果存在,则显示它们的值。
class fruit:
color = 'Red'
name = 'Apple'
frt = fruit()
if hasattr(frt, 'name'):
print("Fruit's name:", frt.name)
if hasattr(frt, 'color'):
print("Fruit's color:", frt.color)
输出
Fruit's name: Apple Fruit's color: Red
示例
让我们看另一个例子,检查变量是否存在于Python程序中。
x =10
class foo:
g = 'rt'
def bar(self):
m=6
if 'm' in locals():
print ('m is local variable')
else:
print ('m is not a local variable')
f = foo()
f.bar()
if hasattr(f, 'g'):
print ('g is an attribute')
else:
print ("g is not an attribute")
if 'x' in globals():
print ('x is a global variable')
输出
执行上面的程序后,输出显示如下:
m is local variable g is an attribute x is a global variable
数据结构
网络
关系数据库管理系统(RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP