如何检查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, in 
print(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()**函数查看变量是否存在于类中。如果对象包含给定的命名属性,则此方法的返回值为true;否则为false。

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

更新于:2023年2月22日

19K+ 次浏览

启动您的职业生涯

完成课程后获得认证

开始
广告
© . All rights reserved.